(tolong lihat attachment, soalnya ada mailer error waktu pertama kali ngirim)
The original message was received at Sun, 8 Mar 1998 17:31:14 +0700 from kembara.extern.ui.ac.id [202.159.34.253] ----- The following addresses had permanent fatal errors ----- "| /usr/local/majordomo/wrapper -C/usr/local/majordomo/virtual1/majordomo.cf resend -l id-linux -h indonix.or.id [EMAIL PROTECTED]" (expanded from: <[EMAIL PROTECTED]>) ----- Transcript of session follows ----- Out of memory! 554 "| /usr/local/majordomo/wrapper -C/usr/local/majordomo/virtual1/majordomo.cf resend -l id-linux -h indonix.or.id [EMAIL PROTECTED]"... unknown mailer error 1Reporting-MTA: dns; indogtw.klwarta.or.id Received-From-MTA: DNS; kembara.extern.ui.ac.id Arrival-Date: Sun, 8 Mar 1998 17:31:14 +0700 Final-Recipient: RFC822; <[EMAIL PROTECTED]> X-Actual-Recipient: RFC822; | /usr/local/majordomo/wrapper -C/usr/local/majordomo/virtual1/majordomo.cf resend -l id-linux -h indonix.or.id [EMAIL PROTECTED] Action: failed Status: 5.0.0 Last-Attempt-Date: Sun, 8 Mar 1998 17:31:31 +0700
Pratyaksha J. Wirapati wrote: > misalkan string "../../bla/bla" tersebut ada di suatu file atau stdin, satu > baris satu path: > > ../../foo > ../../bar > ../../baz > > dan kita ada di /usr/local/archives/RedHat > maka program perl ini: > > use Cwd; > while(<>) > { > $z=cwd(); > ~/((\.\.\/)*)(.*)/; $x=$1; $y=$3; > $x=~s/\.\./\[^\\\/\]\*\\/g;chop($x); > $z=~s/$x\/?$//; > print $z,$y,"\n"; > } > > akan mengubah input menjadi: > > /usr/local/foo > /usr/local/bar > /usr/local/baz > Saya jalankan programnya, tapi keluar pesan... Can't locate cwd.pm in test.pl line 1 di mana test.pl adalah nama file programnya. Koq bisa gini? NB: Saya *sangat awam* terhadap bahasa perl. Btw, program perl tadi bisa meng-absolutkan semua nama file relatif, atau hanya yang berbentuk ../../blabla/bla > >sekaligus men-dereferensi-kan semua symbolic link yang mungkin ada > >(hasil akhir berupa nama file "beneran" yang bukan lagi symbolic link). > > waduh ini agak rumit. nyerah deh. Wah, yang veteran aja udah nyerah, apalagi yang newbie seperti saya? > > tapi ada satu hal yg saya mau nanya. bukannya mau mengalihkan topik, tapi > siapa tau bisa membantu: "masalah sebenarnya apa, sih?" Saya mau me-"mount" direktory FS iso9660 yang ada trans.tbl-nya, tapi tidak dikenali sebagai ekstensi RRIP_..... (walaupun di-mount beneran, nama file-nya masih tetap terpotong)Bash script-nya sudah hampir jadi, tinggal masalah nama file relatif itu tadi, gunanya untuk digunakan sebagai parameter ke ln -s ... Idenya sederhana sekali, saya (buat script untuk) men-search isi trans.tbl dengan grep untuk file yang terpotong namanya, cari nama file panjangnya, lalu set symbolic link dengan nama file panjangnya ke file asli. Yang jadi masalah, bila nama directory input yang diberikan nama relatif, atau nama symbolic link, kacaunya pas dibuat symbolic link yang baru, ketika diakses jadi "too many simbolic links". Bila nama directory input dan output sudah absolut dan tidak mengandung symbolic link, tidak jadi masalah. Gini rancangan script-nya... > #! /bin/bash > # last revision 1998-03-05 > # mtbl -- Copyright (C) Sasmito Adibowo <[EMAIL PROTECTED]> 1998. > # > # Distributed under the GNU General Public License v 2.0 > # > # Modification is allowed as long as the original copyright notice > # is preserved. > > if expr match "$1" "\\-h" >/dev/null > then > echo "$0 sourcedir targetdir" > exit > fi > > VERBOSE=1 > TABLE="trans.tbl" > PATHSEP="/" > SPACE=" " > > SrcDir="$1" > TrgDir="$2" > > if test `expr length "$SrcDir"` -eq 0 > then > echo "Missing source dir name." > exit > fi > if test `expr length "$TrgDir"` -eq 0 > then > echo "Missing target dir name." > exit > fi > > for PathName in "$SrcDir"/* > do > > FileName=`basename "$PathName"` > # > # $FileName ready > # > > # Get TRANS.TBL entry. > # Surround with $FileName with space and ";" (see below), so grep > # will find the correct filename. > # TRANS.TBL is not case sensitive (?) > > FoundLine=`grep -i " $FileName\\.\?;" "$TABLE"` > # echo $FileName > if test `expr length "$FoundLine"` -ne 0 > then > if test $VERBOSE -ne 0 > then > echo "Found $FileName in $TABLE" > fi > # Sample TRANS.TBL entry: > # > # F LINUX.000;1 linux.jdk-1.0.1-try1.common.tar.gz > # > # fields: > # <type> <dosname>;<unknown> <longname> > # type: D is directory entry, F is file entry > # > # echo $FoundLine > > len=`expr length "$FoundLine"` > > AfterDosNameIndex=`expr index "$FoundLine" ";"` > WordLen=`expr $len - $AfterDosNameIndex + 1` > > AfterDosNameEntry=`expr substr "$FoundLine" $AfterDosNameIndex \ > $WordLen` > > # echo $AfterDosNameEntry > LongNameStartIndex=`expr index "$AfterDosNameEntry" " "` > len=`expr length "$AfterDosNameEntry"` > WordLen=`expr $len - $LongNameStartIndex + 1` > LongName=`expr substr "$AfterDosNameEntry" "$LongNameStartIndex" >$WordLen` > LongName=`echo $LongName` #remove spaces and tabs > if test `expr length "$LongName"` -ne 0 > then > if test $VERBOSE -ne 0 > then > echo "Link: $SrcDir/$FileName --> $TrgDir/$LongName" > # > # perform the link -- masih salah kalo nama file-nya >relatif/symlink > # ln -s -v $SrcDir/$FileName $TrgDir/$LongName > fi > fi > else > echo "Entry $FileName not found in $TABLE." > echo "Link: $SrcDir/$FileName $TrgFir/$FileName" > # > # perform the link -- masih salah kalo nama file-nya relatif/symlink > # ln -s -v $SrcDir/$FileName $TrgDir/$FileName > # > fi > done > Bagaimana? -- May The Force be with you, Sasmito Adibowo http://www.bitsmart.com/adib
