Changeset 185 for tags/confman-1.5.6a2


Ignore:
Timestamp:
10/22/2007 17:19:50 (4 years ago)
Author:
arjun
Message:

Fixed the locking bug

Location:
tags/confman-1.5.6a2
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • tags/confman-1.5.6a2/Makefile

    r182 r185  
    88BINFILES                =       abspath 
    99SBINFILES               =       confman confaudit.sh 
    10 LIBEXECFILES    =       export.sh confsync.sh 
     10LIBEXECFILES    =       export.sh confsync.sh confaudit.sh 
    1111LIBFILES                =       confmanlib.sh confmandoc.sh confmancommon.sh 
    1212ENVFILES                =       confman_completions 
  • tags/confman-1.5.6a2/confman

    r174 r185  
    1 #! /bin/bash   
     1#! /bin/bash  
    22# 
    33# confman provides a command-line interface to Rescomp's server configuration  
     
    4040    if conf_wcopy_locked? 
    4141    then 
    42         local lock_pid=`cat ${WORK_PATH}/confman.lock` #gets the PID of the confman instance that created the lock 
    43         echo "Your working copy is locked by confman[$lock_pid]." >&2 
     42        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     43        unset WCOPY_LOCK_PID 
    4444    else 
    4545        if [ -d ${WORK_PATH} ]  
     
    7676    if conf_wcopy_locked? 
    7777    then 
    78         local lock_pid=`cat ${WORK_PATH}/confman.lock`  
    79         echo "Your working copy is locked by confman[$lock_pid]." >&2 
     78        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     79        unset WCOPY_LOCK_PID 
    8080    else 
    8181        conf_lock_wcopy 
     
    9595    if conf_wcopy_locked? 
    9696    then 
    97         local lock_pid=`cat ${WORK_PATH}/confman.lock`  
    98         echo "Your working copy is locked by confman[$lock_pid]." >&2 
     97        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     98        unset WCOPY_LOCK_PID 
    9999    else 
    100100        conf_lock_wcopy 
     
    112112    if conf_wcopy_locked? 
    113113    then 
    114         local lock_pid=`cat ${WORK_PATH}/confman.lock`  
    115         echo "Your working copy is locked by confman[$lock_pid]." >&2 
     114        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     115        unset WCOPY_LOCK_PID 
    116116    else 
    117117        conf_lock_wcopy 
     
    129129    if conf_system_locked?  && conf_wcopy_locked? 
    130130    then 
    131         local wcopy_pid=`cat ${WORK_PATH}/confman.lock`  
    132         local system_pid=`cat /var/run/confman.lock` 
    133         echo "The system is locked by confman[$system_pid] and your working copy is locked by confman[$wcopy_pid]" >&2 
     131        echo "The system is locked by confman[$SYSTEM_LOCK_PID] and your working copy is locked by confman[$WCOPY_LOCK_PID]" >&2 
     132        unset WCOPY_LOCK_PID 
     133        unset SYSTEM_LOCK_PID 
    134134    elif conf_system_locked?  
    135135    then 
    136         local lock_pid=`cat /var/run/confman.lock`  
    137         echo "The system is locked by confman[$lock_pid]." >&2 
     136        echo "The system is locked by confman[$SYSTEM_LOCK_PID]." >&2 
     137        unset SYSTEM_LOCK_PID 
    138138    elif conf_wcopy_locked? 
    139139    then 
    140         local lock_pid=`cat ${WORK_PATH}/confman.lock`  
    141         echo "Your working copy is locked by confman[$lock_pid]." >&2 
     140        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     141        unset WCOPY_LOCK_PID 
    142142    else 
    143143        conf_lock_wcopy 
     
    180180    if conf_system_locked?  && conf_wcopy_locked? 
    181181    then 
    182         local wcopy_pid=`cat ${WORK_PATH}/confman.lock`  
    183         local system_pid=`cat /var/run/confman.lock` 
    184         echo "The system is locked by confman[$system_pid] and your working copy is locked by confman[$wcopy_pid]" >&2 
     182        echo "The system is locked by confman[$SYSTEM_LOCK_PID] and your working copy is locked by confman[$WCOPY_LOCK_PID]" >&2 
     183        unset WCOPY_LOCK_PID 
     184        unset SYSTEM_LOCK_PID 
    185185    elif conf_system_locked?  
    186186    then 
    187         local lock_pid=`cat /var/run/confman.lock`  
    188         echo "The system is locked by confman[$lock_pid]." >&2 
     187        echo "The system is locked by confman[$SYSTEM_LOCK_PID]." >&2 
     188        unset SYSTEM_LOCK_PID 
    189189    elif conf_wcopy_locked? 
    190190    then 
    191         local lock_pid=`cat ${WORK_PATH}/confman.lock`  
    192         echo "Your working copy is locked by confman[$lock_pid]." >&2 
     191        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     192        unset WCOPY_LOCK_PID 
    193193    else 
    194194        conf_lock_wcopy 
     
    234234    if conf_wcopy_locked? 
    235235    then 
    236         local lock_pid=`cat ${WORK_PATH}/confman.lock` #gets the PID of the confman instance that created the lock 
    237     fi 
    238     if conf_wcopy_locked? && [ !  $lock_pid = $$ ] #checks to see if the wcopy is locked; if so, checks to see if the current instance created the lock 
    239         then 
    240             echo "Your working copy is locked by confman[$lock_pid]" >&2 
    241         else 
     236        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     237        unset WCOPY_LOCK_PID 
     238    else 
    242239        if  conf_lock_wcopy 
    243240        then 
     
    409406    if conf_wcopy_locked? 
    410407    then 
    411         local lock_pid=`cat ${WORK_PATH}/confman.lock`  
    412         echo "Your working copy is locked by confman[$lock_pid]." >&2 
     408        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     409        unset WCOPY_LOCK_PID 
    413410    else 
    414411        conf_lock_wcopy 
     
    426423    if conf_wcopy_locked? 
    427424    then 
    428         local lock_pid=`cat ${WORK_PATH}/confman.lock`  
    429         echo "Your working copy is locked by confman[$lock_pid]." >&2 
     425        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     426        unset WCOPY_LOCK_PID 
    430427    else 
    431428        conf_lock_wcopy 
     
    519516    if conf_wcopy_locked? 
    520517    then 
    521         local lock_pid=`cat ${WORK_PATH}/confman.lock` #gets the PID of the confman instance that created the lock 
    522     fi 
    523     if conf_wcopy_locked? && [ !  $lock_pid = $$ ] #checks to see if the wcopy is locked; if so, checks to see if the current instance created the lock 
    524         then 
    525             echo "Your working copy is locked by confman[$lock_pid]" >&2 
    526         else 
     518        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     519        unset WCOPY_LOCK_PID 
     520    else 
    527521        if  conf_lock_wcopy 
    528522        then 
     
    562556    if conf_wcopy_locked? 
    563557    then 
    564         local lock_pid=`cat ${WORK_PATH}/confman.lock` #gets the PID of the confman instance that created the lock 
    565     fi 
    566     if conf_wcopy_locked? && [ !  $lock_pid = $$ ] #checks to see if the wcopy is locked; if so, checks to see if the current instance created the lock 
    567         then 
    568             echo "Your working copy is locked by confman[$lock_pid]" >&2 
    569         else 
     558        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     559        unset WCOPY_LOCK_PID 
     560    else 
    570561        if  conf_lock_wcopy 
    571562        then 
     
    605596    if conf_wcopy_locked? 
    606597    then 
    607         local lock_pid=`cat ${WORK_PATH}/confman.lock` #gets the PID of the confman instance that created the lock 
    608     fi 
    609     if conf_wcopy_locked? && [ !  $lock_pid = $$ ] #checks to see if the wcopy is locked; if so, checks to see if the current instance created the lock 
    610         then 
    611             echo "Your working copy is locked by confman[$lock_pid]" >&2 
    612         else 
     598        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     599        unset WCOPY_LOCK_PID 
     600    else 
    613601        if  conf_lock_wcopy 
    614602        then 
     
    648636    if conf_wcopy_locked? 
    649637    then 
    650         local lock_pid=`cat ${WORK_PATH}/confman.lock`  
    651         echo "Your working copy is locked by confman[$lock_pid]." >&2 
     638        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     639        unset WCOPY_LOCK_PID 
    652640    else 
    653641        conf_lock_wcopy 
     
    674662    if conf_wcopy_locked? 
    675663    then 
    676         local lock_pid=`cat ${WORK_PATH}/confman.lock`  
    677         echo "Your working copy is locked by confman[$lock_pid]." >&2 
     664        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     665        unset WCOPY_LOCK_PID 
    678666    else 
    679667        conf_lock_wcopy 
     
    693681    if conf_wcopy_locked? 
    694682    then 
    695         local lock_pid=`cat ${WORK_PATH}/confman.lock`  
    696         echo "Your working copy is locked by confman[$lock_pid]." >&2 
     683        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     684        unset WCOPY_LOCK_PID 
    697685    else 
    698686        conf_lock_wcopy 
     
    712700    if conf_system_locked?  && conf_wcopy_locked? 
    713701    then 
    714         local wcopy_pid=`cat ${WORK_PATH}/confman.lock`  
    715         local system_pid=`cat /var/run/confman.lock` 
    716         echo "The system is locked by confman[$system_pid] and your working copy is locked by confman[$wcopy_pid]" >&2 
     702        echo "The system is locked by confman[$SYSTEM_LOCK_PID] and your working copy is locked by confman[$WCOPY_LOCK_PID]" >&2 
     703        unset WCOPY_LOCK_PID 
     704        unset SYSTEM_LOCK_PID 
    717705    elif conf_system_locked?  
    718706    then 
    719         local lock_pid=`cat /var/run/confman.lock`  
    720         echo "The system is locked by confman[$lock_pid]." >&2 
     707        echo "The system is locked by confman[$SYSTEM_LOCK_PID]." >&2 
     708        unset SYSTEM_LOCK_PID 
    721709    elif conf_wcopy_locked? 
    722710    then 
    723         local lock_pid=`cat ${WORK_PATH}/confman.lock`  
    724         echo "Your working copy is locked by confman[$lock_pid]." >&2 
     711        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     712        unset WCOPY_LOCK_PID 
    725713    else 
    726714        conf_lock_wcopy 
     
    754742    if conf_wcopy_locked? 
    755743    then 
    756         local lock_pid=`cat ${WORK_PATH}/confman.lock`  
    757         echo "Your working copy is locked by confman[$lock_pid]." >&2 
     744        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     745        unset WCOPY_LOCK_PID 
    758746    else 
    759747        conf_lock_wcopy 
     
    771759    if conf_wcopy_locked? 
    772760    then 
    773         local lock_pid=`cat ${WORK_PATH}/confman.lock`  
    774         echo "Your working copy is locked by confman[$lock_pid]." >&2 
     761        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     762        unset WCOPY_LOCK_PID 
    775763    else 
    776764        conf_lock_wcopy 
     
    805793    if conf_wcopy_locked? 
    806794    then 
    807         local lock_pid=`cat ${WORK_PATH}/confman.lock`  
    808         echo "Your working copy is locked by confman[$lock_pid]." >&2 
     795        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     796        unset WCOPY_LOCK_PID 
    809797    else 
    810798        conf_lock_wcopy 
     
    824812    if conf_wcopy_locked? 
    825813    then 
    826         local lock_pid=`cat ${WORK_PATH}/confman.lock`  
    827         echo "Your working copy is locked by confman[$lock_pid]." >&2 
     814        echo "Your working copy is locked by confman[$WCOPY_LOCK_PID]." >&2 
     815        unset WCOPY_LOCK_PID 
    828816    else 
    829817        conf_lock_wcopy 
  • tags/confman-1.5.6a2/confmancommon.sh

    r167 r185  
    1616UCONF="${HOME}/.confmanrc" 
    1717MYNAME=`basename $0` 
    18  
     18if [ -z $MY_PID ] ; then 
     19    MY_PID="$$" 
     20fi 
    1921# First things first. Check to see if the logging fd is open. If it's not, 
    2022# we re-spawn confman inside a pipe. 
  • tags/confman-1.5.6a2/confmanlib.sh

    r173 r185  
    4747    else 
    4848        touch ${WORK_PATH}/confman.lock 
    49         echo $$ > "${WORK_PATH}/confman.lock" #Send PID to the lock to allow for recursive calls 
     49        echo $MY_PID > "${WORK_PATH}/confman.lock" #Send PID to the lock to allow for recursive calls 
    5050        return 0 
    5151    fi 
     
    6363    else 
    6464        touch ${WORK_PATH}/confman.lock 
    65         echo $$ > "${WORK_PATH}/confman.lock" #Send PID to the lock to allow for recursive calls 
     65        echo $MY_PID > "${WORK_PATH}/confman.lock" #Send PID to the lock to allow for recursive calls 
    6666        return 0 
    6767    fi 
     
    8282        sudo touch /var/run/confman.lock 
    8383        sudo chmod 666 /var/run/confman.lock 
    84         sudo echo $$ > "/var/run/confman.lock"  
    85         return 1 
     84        sudo echo $MY_PID > "/var/run/confman.lock"  
     85        return 0 
    8686    fi 
    8787} 
     
    9595 
    9696function conf_wcopy_locked? { 
    97     if [ -f ${WORK_PATH}/confman.lock ] 
    98     then 
     97    if [ -f ${WORK_PATH}/confman.lock ]  
     98    then 
     99        WCOPY_LOCK_PID=`cat ${WORK_PATH}/confman.lock` #gets the PID of the confman instance that created the lock 
     100    else 
     101        return 1 
     102    fi 
     103    if [ $WCOPY_LOCK_PID = $MY_PID ]  
     104    then 
     105        return 1 
     106    else 
    99107        return 0 
    100     else 
    101         return 1 
    102108    fi 
    103109} 
     
    106112    if [ -f /var/run/confman.lock ] 
    107113    then 
     114        SYSTEM_LOCK_PID=`cat /var/run/confman.lock` #gets the PID of the confman instance that created the lock 
     115    else 
     116        return 1 
     117    fi 
     118    if [ $SYSTEM_LOCK_PID = $MY_PID ]  
     119    then 
     120        return 1 
     121    else 
    108122        return 0 
    109     else 
    110         return 1 
    111123    fi 
    112124} 
     
    417429        local group=$3 
    418430        local mode=$4 
    419         local workdir="/" 
     431        local workdir="" 
    420432        local directories=`echo "$directory" | sed 's:/: :g'` 
    421433        local dir 
Note: See TracChangeset for help on using the changeset viewer.