X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=usr_bin%2Fgrml-screen;h=b455b628485a9cbf9addd3b4a2141b059b6257b7;hb=94fb96c9d8035d6603d16d742305a23587733bcb;hp=7deeb770928482505deac1f49668848a3caba42e;hpb=f9835a0551733e1540cf826f2a520ee96c342718;p=grml-scripts-core.git diff --git a/usr_bin/grml-screen b/usr_bin/grml-screen index 7deeb77..b455b62 100755 --- a/usr_bin/grml-screen +++ b/usr_bin/grml-screen @@ -14,51 +14,22 @@ sudo chmod 660 $TTY sudo chown $USER.tty $TTY -# FIXME: fix for screen race-conditions -PID_FILE_="/var/run/grml-screen" -MY_PID_="$$" -if [ ! -d "/var/run/screen/S-$USER" ]; then - # no /var/run/screen/S-$USER and possible no /var/run/screen either -> locking - for i in `seq 40`; do # 40*0.25 = 10 seconds - if lockfile-create --retry 0 $PID_FILE_; then - echo $MY_PID_ >$PID_FILE_ - break - fi - sleep 0.25 - done -fi -if [ -f $PID_FILE_ ]; then - # FORK BEGIN - ( - for i in `seq 40`; do # 40*0.25 = 10 seconds - if [ ! -d "/var/run/screen/S-$USER" ]; then - sleep 0.25 # educated guess - else - break - fi - done - if [ `cat $PID_FILE_` = $MY_PID_ ]; then - rm $PID_FILE_ - lockfile-remove $PID_FILE_ - fi - )& - # FORK END -else - SLEEP_TIME_="$(( $$ % 5 * 5 + 5 ))" - echo "grml-screen: Error could not create lockfile! (sleeping for $SLEEP_TIME_)" - sleep $SLEEP_TIME_ +# try to mitigate raceconditions from screen +SCREENDIR_="/var/run/screen" +if [ `id -u` = 0 ] ; then + mkdir -m 755 $SCREENDIR_ >/dev/null 2>& 1 && chgrp utmp $SCREENDIR_ fi +mkdir -m 700 "${SCREENDIR_}/S-$USER" >/dev/null 2>&1 # now run screen with config cd $HOME # important for e.g. hardcopy-feature - # do we have a utf8 enabled terminal? - [ -x /usr/bin/vt-is-UTF8 ] && /usr/bin/vt-is-UTF8 -q && UTF='-U' + if [ `id -u` = 0 ] ; then - exec screen $UTF -c /etc/grml/screenrc + exec screen -U -c /etc/grml/screenrc elif [ -r "$HOME/.screenrc" ] ; then - exec screen $UTF -c "$HOME/.screenrc" + exec screen -U -c "$HOME/.screenrc" else - exec screen $UTF -c /etc/grml/screenrc_grml + exec screen -U -c /etc/grml/screenrc_grml fi ## END OF FILE #################################################################