Fixed getopt in pnd_run.sh and eliminated unused var
authorskeezix <skeezix@flotsam-vm.(none)>
Mon, 23 Feb 2009 23:04:02 +0000 (18:04 -0500)
committerskeezix <skeezix@flotsam-vm.(none)>
Mon, 23 Feb 2009 23:04:02 +0000 (18:04 -0500)
lib/pnd_apps.c
testdata/scripts/pnd_run.sh

index daf3dda..35b1565 100644 (file)
@@ -10,7 +10,7 @@
 
 unsigned char pnd_apps_exec ( char *pndrun, char *fullpath, char *unique_id, char *rel_exec, char *rel_startdir, unsigned int clockspeed ) {
   char *argv [ 20 ];
-  int f, i;
+  int f;
 
   printf ( "Entering pnd_apps_exec\n" );
 #if 0
@@ -40,6 +40,7 @@ unsigned char pnd_apps_exec ( char *pndrun, char *fullpath, char *unique_id, cha
 
   // debug
 #if 0
+  int i;
   for ( i = 0; i < f; i++ ) {
     printf ( "exec's argv %u [ %s ]\n", i, argv [ i ] );
   }
index ce32ff3..b26ccf2 100755 (executable)
@@ -2,15 +2,13 @@
  
 #input pnd_run.sh -p "/path/to/foobar.pnd" -e "exe" --a "arguments for exe"
 # -u to skip union mount
-# -b to override basename
-#output none
+# -s startdir
+# arguments can be inside -e, -a is optional
  
-########################### FS NAMES NEED ADJUSTMENT #################
-#todo
-# check if all vars are set to sensible values
+############################# dont forget to remove the echos! ############################
  
 # parse arguments
-TEMP=`getopt -o p:e:a:b:u:: --long p-long,e-long:,a-long: -- "$@"`
+TEMP=`getopt -o p:e:a:b:u::s: --long p-long,e-long:,a-long: -- "$@"`
  
 if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
  
@@ -23,6 +21,7 @@ while true ; do
                 -e|--e-long) echo "exec set to \`$2'" ;EXENAME=$2;shift 2 ;;
                 -u) echo "u set, no union pls!";UNION=1;shift 2 ;;
                 -b) echo "BASENAME set to $2";BASENAME=$2;shift 2;;
+                -s) echo "startdir set to $2";STARTDIR=$2;shift 2;;
                 -a|--a-long) 
                         case "$2" in
                                 "") echo "no arguments"; shift 2 ;;
@@ -48,13 +47,13 @@ oCWD=$(pwd)
  
 #detect fs
 if [ $DFS = ISO ]; then
-        mntline="mount -o loop,exec,umask=777 $PND /mnt/pnd/$BASENAME"
+        mntline="mount -o loop,fmask=000 $PND /mnt/pnd/$BASENAME"
         echo "Filetype is $DFS"
 elif [ $DFS = Zip ]; then
-        mntline="fuse-zip $PND /mnt/pnd/$BASENAME -oro" #should be reight now
+        mntline="fuse-zip $PND /mnt/pnd/$BASENAME -o ro,fmask=000"
         echo "Filetype is $DFS"
 elif [ $DFS = directory ]; then
-        mntline="mount --bind -o ro $PND /mnt/pnd/$BASENAME"
+        mntline="mount --bind -o ro,fmask=000 $PND /mnt/pnd/$BASENAME"
 #we bind the folder, now it can be treated in a unified way ATENTION: -o ro doesnt work for --bind at least on 25, on 26 its possible using remount, may have changed on 27
         echo "Filetype is $DFS"
 else
@@ -63,54 +62,48 @@ else
 fi
  
 #create mountpoints
-echo "
-#will run:
-# create mountpoints
-" 
-if [ ! -d /mnt/pnd/$BASENAME ]; then
-echo "mkdir -p /mnt/pnd/$BASENAME "
-fi
-if [ ! -d $MOUNTPOINT/appdata/$BASENAME ]; then
-echo "mkdir -p $MOUNTPOINT/appdata/$BASENAME "
-fi
-if [ ! -d /mnt/utmp/$BASENAME ]; then
-echo "mkdir -p /mnt/utmp/$BASENAME "
-fi 
+if [ ! -d /mnt/pnd/$BASENAME ]; then echo "mkdir -p /mnt/pnd/$BASENAME "; fi
+if [ ! -d $MOUNTPOINT/appdata/$BASENAME ]; then echo "mkdir -p $MOUNTPOINT/appdata/$BASENAME "; fi
+if [ ! -d /mnt/utmp/$BASENAME ]; then echo "mkdir -p /mnt/utmp/$BASENAME "; fi 
  
 #mount
 if [ ! $UNION ] ; then
+        #is the union already mounted? if not mount evrything, else launch the stuff
         mount | grep "on /mnt/utmp/$BASENAME type" > /dev/null
         if [ ! $? -eq 0 ]; then 
-                echo "
                 $mntline #mount the pnd/folder
                 #mount -t unionfs -o exec,dirs\=$MOUNTPOINT/appdata/$BASENAME=rw:/mnt/pnd/$BASENAME=ro unionfs /mnt/utmp/$BASENAME #union mount
                 #aufs, one of those should work, bit unsure.
-                mount -t aufs -o exec,umask=777,dirs\=$MOUNTPOINT/appdata/$BASENAME=rw:/mnt/pnd/$BASENAME=ro none /mnt/utmp/$BASENAME #aufs?
+                mount -t aufs -o exec,fmask=000,dirs\=$MOUNTPOINT/appdata/$BASENAME=rw:/mnt/pnd/$BASENAME=ro none /mnt/utmp/$BASENAME #aufs?
                 #mount -t aufs -o exec,dirs\=$MOUNTPOINT/appdata/$BASENAME=rw:/mnt/pnd/$BASENAME=ro aufs /mnt/utmp/$BASENAME #aufs?
-                "
         else
                 echo "doh!"
         fi
  
-        echo "
         #start app
         cd /mnt/utmp/$BASENAME
+        if [ $STARTDIR ]; then cd $STARTDIR; fi
         $EXENAME $ARGUMENTS 
-        cd $oCWD
         #app exited
-        "
 else
-echo "
         $mntline
         cd /mnt/pnd/$BASENAME
+        if [ $STARTDIR ]; then cd $STARTDIR; fi
         $EXENAME $ARGUMENTS 
-        cd $oCWD
-"
 fi
-echo "
 #clean up
 umount /mnt/utmp/$BASENAME
-umount /mnt/pnd/$BASENAME
-rmdir /mnt/pnd/$BASENAME
-rmdir /mnt/utmp/$BASENAME
-"
+if [ $? -eq 0 ]; then 
+        umount /mnt/pnd/$BASENAME
+        rmdir /mnt/pnd/$BASENAME
+        rmdir /mnt/utmp/$BASENAME
+fi