summaryrefslogtreecommitdiff
blob: 7d2b9f22b163b234b46d1b13d61da704547a13cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
--- rpm2targz	2006-04-24 14:36:40.000000000 +0200
+++ rpm2targz	2006-04-24 14:37:08.000000000 +0200
@@ -23,20 +23,24 @@
 
 # debug switch to allow to bypass use of rpm2cpio provided by the rpm package
 USERPM2CPIO=true
-if [ "$TMPDIR" = "" ]; then
-  TMPDIR=/tmp
+[ "$TMPDIR" == "" ] && TMPDIR=/tmp
+if [ ! -d "$TMPDIR" ]; then
+	echo "TMPDIR=$TMPDIR is not a dir" > /dev/stderr
+	exit 1
 fi
-# If mcookie is available, use it for better /tmp security.
-if [ -x `which mcookie` ]; then
-  COOKIE=`mcookie`
-else
-  COOKIE=$$
+WORKDIR=`mktemp -d $TMPDIR/$$XXXXXX`
+if [ $? != 0 ]; then
+	echo "Failed to make tmp workdir for file i/o conversion" > /dev/stderr
+	exit 1
 fi
+
 if [ "$1" = "" ]; then
   echo "$0:  Converts RPM format to standard GNU tar + GNU zip format."
-  echo "            (view converted packages with \"less\", install and remove"
-  echo "            with \"installpkg\", \"removepkg\", \"pkgtool\", or manually"
-  echo "            with \"tar\")"
+  if [ -e /etc/slackware-version ]; then
+    echo "            (view converted packages with \"less\", install and remove"
+    echo "            with \"installpkg\", \"removepkg\", \"pkgtool\", or manually"
+    echo "            with \"tar\")"
+  fi
   echo
   echo "Usage:      $0 <file.rpm>"
   if [ "`basename $0`" = "rpm2tgz" ]; then
@@ -50,8 +54,7 @@
   if [ ! "$1" = "$*" ]; then
     echo "Processing file: $i"
   fi
-  rm -rf $TMPDIR/rpm2targz$COOKIE # clear the way, just in case of mischief
-  mkdir $TMPDIR/rpm2targz$COOKIE
+  rm -rf ${WORKDIR}/* || exit 1 ; # clear the way, just in case of mischief
 
   # Determine if this is a source or binary RPM.
   # If we have getrpmtype, use that.  Otherwise, try "file".
@@ -69,12 +72,12 @@
     fi
   fi
 
-  ofn=$TMPDIR/rpm2targz$COOKIE/`basename $i .rpm`.cpio
+  ofn=${WORKDIR}/`basename $i .rpm`.cpio
   if $USERPM2CPIO && which rpm2cpio 1> /dev/null 2> /dev/null ; then
     rpm2cpio $i > $ofn 2> /dev/null
     if [ ! $? = 0 ]; then
       echo "... rpm2cpio failed.  (maybe $i is not an RPM?)"
-      ( cd $TMPDIR ; rm -rf rpm2targz$COOKIE )
+      ( rm -rf "${WORKDIR}/*" )
       continue
     fi
   else # less reliable than rpm2cpio...
@@ -90,7 +93,7 @@
 	decomp="bzip2"
     else
         echo  " $i - no magic compression identifier found - skipping file"
-        ( cd $TMPDIR ; rm -rf rpm2targz$COOKIE )
+        ( rm -rf "${WORKDIR}/*" )
         continue
     fi
     echo -n "  trying to decompress with ${decomp}..."
@@ -100,11 +103,11 @@
     else
       echo "  FAILED"
       echo  " $i  failed to decompress - skipping file"
-      ( cd $TMPDIR ; rm -rf rpm2targz$COOKIE )
+      ( rm -rf "${WORKDIR}/*" )
       continue
     fi
   fi
-  DEST=$TMPDIR/rpm2targz$COOKIE
+  DEST=${WORKDIR}
   #if [ "$isSource" = "1" ]; then
   #   DEST=$DEST/$(basename $(basename $i .rpm) .src)
   #fi
@@ -113,11 +116,12 @@
     cpio --extract --preserve-modification-time --make-directories < $ofn 1> /dev/null 2> /dev/null
     rm -f $ofn
     find . -type d -perm 700 -exec chmod 755 {} \; )
-  ( cd $TMPDIR/rpm2targz$COOKIE ; tar cf - . ) > `basename $i .rpm`.tar
+  ( cd ${WORKDIR} ; tar cf - . ) > `basename $i .rpm`.tar
   gzip -9 `basename $i .rpm`.tar
   if [ "`basename $0`" = "rpm2tgz" ]; then
     mv `basename $i .rpm`.tar.gz `basename $i .rpm`.tgz
   fi
-  ( cd $TMPDIR ; rm -rf rpm2targz$COOKIE )
+  ( rm -rf "${WORKDIR}/*" )
   echo
 done
+rm -rf ${WORKDIR}