(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 1
Reporting-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






Kirim email ke