123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772 |
-
- # Awk Library file for parsing UDB files
- #
- function parseUdb() {
- # nawk has already read the initial line.
- # Tokenize it before doing anything else.
- tokenize()
- readDefaults(defaults)
- # assign hp-ux ".db" file src and link defaults
- # if none were designated.
- if ( SrcDefault == "" )
- SrcDefault = "a_out_location"
- if ( LnkDefault == "" )
- LnkDefault = "link_source"
- if ( TypDefault == "" )
- TypDefault = "type"
- if ( DestDefault == "" )
- DestDefault = "install_target"
- if ( ModeDefault == "" )
- ModeDefault = "mode"
- if ( OwnerDefault == "" )
- OwnerDefault = "owner"
- if ( GroupDefault == "" )
- GroupDefault = "group"
- readData()
- }
- # -------------------------------------------------------------
- # readDefaults
- # This routine reads the defaults at the front section
- # of the universal database and salts the defaults away.
- #
- # -------------------------------------------------------------
- function readDefaults(dflts)
- {
- if ( DeBug > 0 ) {
- Depth++
- for ( i=1; i < Depth; i++ )
- printf(" ") > DeBugFile
- print "Entering function readDefaults" > DeBugFile
- }
- do {
- os = getOS()
- if ( osQual != "defaults" )
- syntaxError("No defaults for: " BlockToken)
- if ( os == BlockToken || os == "default" )
- break
- skipToToken("}")
- } while ( 1 )
- fillDefaults()
- if ( DeBug > 1 )
- print "Skipping remaining defaults" > DeBugFile
- # skip remaining default specs
- while ( lookAhead() == "{" ) {
- # This should be another default spec
- # skip it. (watch out for syntax errors)
- os = getOS()
- if ( osQual != "defaults" )
- syntaxError("Expected os:defaults found: \"" os ":" osQual "\"")
- if ( os == BlockToken && fileName == FILENAME )
- syntaxError("Only one \"defaults\" record allowed per os" )
- skipToToken("}");
- }
- if ( DeBug > 0 ) Depth--
- }
- # -------------------------------------------------------------
- # syntaxError
- # bail out
- #
- # (optionally) mail a message to an administrator if a syntax
- # error occurs in a database.
- #
- # -------------------------------------------------------------
- function syntaxError(reason) {
- if ( DeBug > 0 ) {
- Depth++
- for ( i=1; i < Depth; i++ )
- printf(" ") > DeBugFile
- print "Entering function syntaxError:" > DeBugFile
- }
- print "Syntax ERROR line: " NR " of file: " FILENAME
- if (reason)
- print " " reason
- system( "rm -f /tmp/SyntaxError" )
- system( "touch /tmp/SyntaxError" )
- print "Syntax ERROR line: " NR " of file: " FILENAME > "/tmp/SyntaxError"
- if (reason)
- print " " reason >> "/tmp/SyntaxError"
- close( "/tmp/SyntaxError" )
- if ( mailTo != "" ) {
- system( "mailx -s \"database syntax error\" "mailTo" < /tmp/SyntaxError" )
- }
- system( "rm -f /tmp/SyntaxError" )
- exit 1
- }
- # -------------------------------------------------------------
- # fillDefaults
- # This routine reads the defaults in the OS
- # defaults section of the database. It saves the defaults
- # in the "defaults" awk-style string array.
- #
- # -------------------------------------------------------------
- function fillDefaults() {
- if ( DeBug > 0 ) {
- Depth++
- for ( i=1; i < Depth; i++ )
- printf(" ") > DeBugFile
- print "Entering function fillDefaults:" > DeBugFile
- }
- tempDflt = ""
- NumEntries = 1
- do {
- if ( tempDflt != "" ) {
- keyword = tempDflt
- tempDflt = ""
- }
- else
- keyword = nextToken()
-
- if ( keyword == "}" )
- break;
- if ( "=" != nextToken())
- syntaxError("Keyword: " keyword " not followed by \"=\" ");
- tempDflt = nextToken();
- if ( lookAhead() == "=" )
- defaults[keyword]=""
- else {
- if ( tempDflt == "<SRC>" ) {
- SrcDefault = keyword;
- tempDflt = ""
- }
- if ( tempDflt == "<LNK>" ) {
- LnkDefault = keyword;
- tempDflt = ""
- }
- if ( tempDflt == "<TYPE>" ) {
- TypDefault = keyword;
- tempDflt = "file"
- }
- if ( tempDflt == "<DEST>" ) {
- DestDefault = keyword;
- tempDflt = ""
- }
- if ( tempDflt == "<MODE>" ) {
- ModeDefault = keyword;
- tempDflt = "0444"
- }
- if ( tempDflt == "<OWNER>" ) {
- OwnerDefault = keyword;
- tempDflt = "bin"
- }
- if ( tempDflt == "<GROUP>" ) {
- GroupDefault = keyword;
- tempDflt = "bin"
- }
- defaults[keyword]= tempDflt
- tempDflt = ""
- }
- defOrder[NumEntries++] = keyword;
- } while ( 1 )
- if ( DeBug > 3 ) {
- DBGprintArray(defaults,"defaults")
- print "SrcDefault =" SrcDefault > DeBugFile
- print "LnkDefault =" LnkDefault > DeBugFile
- print "TypDefault =" TypDefault > DeBugFile
- }
- if ( DeBug > 0 ) Depth--
- }
- # -------------------------------------------------------------
- # getOS
- # This routine scans the database for an
- # open brace, then a token, then a ":" indicating
- # the start of an OS defaults section.
- #
- # -------------------------------------------------------------
- function getOS()
- {
- if ( DeBug > 0 ) {
- Depth++
- for ( i=1; i < Depth; i++ )
- printf(" ") > DeBugFile
- print "Entering function getOS:" > DeBugFile
- }
- osQual = ""
- gotOS = 0
- if ( "{" != nextToken() )
- syntaxError("Missing initial {")
- os = nextToken();
- if ( lookAhead() == ":" ) {
- nextToken();
- osQual= nextToken();
- } else
- osQual= ""
- if ( DeBug > 0 ) Depth--
- return os
- }
- # -------------------------------------------------------------
- # nextToken
- # parse the incoming data stream into tokens.
- #
- # -------------------------------------------------------------
- function nextToken() {
- if ( DeBug > 0 ) {
- Depth++
- for ( i=1; i < Depth; i++ )
- printf(" ") > DeBugFile
- print "Entering function nextToken:" > DeBugFile
- }
- if ( EOF_Reached == 1 )
- syntaxError("Premature EOF");
- tmpToken=tokens[TK++]
- while ( TK > Ntokens || tokens[TK] == ";" ) {
- TK++
- if ( TK > Ntokens )
- if ( newLine() <= 0 ) {
- EOF_Reached = 1;
- break;
- }
- }
- if ( DeBug > 2 )
- print "Returning token: " tmpToken > DeBugFile
- if ( DeBug > 0 ) Depth--
- return tmpToken
- }
- # -------------------------------------------------------------
- # lookAhead
- # return the token at the head of the current list of
- # tokens, but do not bump the token count in TK
- #
- # -------------------------------------------------------------
- function lookAhead() {
- if ( DeBug > 0 ) {
- Depth++
- for ( i=1; i < Depth; i++ )
- printf(" ") > DeBugFile
- print "Entering function lookAhead" > DeBugFile
- }
- if ( DeBug > 0 ) Depth--
- return tokens[TK];
- }
- # -------------------------------------------------------------
- # newLine, tokenize
- # read a new line of input and tokenize it.
- #
- # -------------------------------------------------------------
- function newLine() {
- if ( DeBug > 0 ) {
- Depth++
- for ( i=1; i < Depth; i++ )
- printf(" ") > DeBugFile
- print "Entering function newLine:" > DeBugFile
- }
- if ( (retval = getline) <= 0 ) {
- if ( DeBug > 0 ) Depth--
- return retval
- }
- retval = tokenize()
- if ( DeBug > 0 ) Depth--
- return retval
- }
- function tokenize() {
- if ( DeBug > 0 ) {
- Depth++
- for ( i=1; i < Depth; i++ )
- printf(" ") > DeBugFile
- print "Entering function tokenize:" > DeBugFile
- }
- # Workaround for a strange awk bug, seen on FreeBSD
- # and results in .db files generated with
- # Syntax ERROR line: 10 of file: CDE-INC.udb
- # Missing initial {
- #
- DUMMY = $0
- # Skip blank/comment lines
- while ( NF == 0 || $0 ~ /^[ ]*#/ ) {
- if ( (getline) <= 0 ) {
- if ( DeBug > 0 ) Depth--
- return 0
- }
- }
-
- #
- # Make sure syntactically meaningful characters are surrounded by
- # white space. (I gave up on gsub for this purpose).
- #
- last=1
- Str="" # temp string for modified input line
- tstStr=$0 # part of input line being tested
- newStr=$0 # current input line image with modifications
- ##########################################################################
- # REPLACE THE FOLLOWING LINE WITH A WORK_AROUND FOR A PROBLEM WITH
- # THE MATCH FUNCTION FOR THE SUN VERSION OF "nawk"
- #
- # while ( match(tstStr,"[^\\\][:=}{;]") ) {
- #
- while ( match(tstStr,"[:=}{;]") ) {
- if ( RSTART-1 > 0 && substr(tstStr,RSTART-1,1) != "\\") {
- RSTART=RSTART-1
- LENGTH=LENGTH+1
- } else {
- #
- # The character was escaped with a backslash.
- # Patch things up -- continue testing the rest
- # of the line.
- #
- Str=Str substr($0,last,RSTART+1)
- last = last + RSTART + 1
- tstStr =substr($0,last)
- newStr = Str tstStr
- continue;
- }
- ####################### end of workaround ################################
- ############################################################################
- if ( DeBug > 1 ) {
- print "Tokenize: Match found in: " tstStr
- print "RSTART= " RSTART " ; RLENGTH = " RLENGTH
- }
- # match found --
- # the temp string is now modified to contain:
- # 1) all characters up to the match and the first char of match
- # 2) blank before the syntactically significant char
- # 3) the significant character
- # 4) blank following the significant character
- Str=Str substr($0,last,RSTART) " " substr($0,last+RSTART,1) " "
- last = last + RSTART + 1;
- #
- # Test remaining part of input line for additional occurances
- # of syntactically significant characters.
- #
- tstStr=substr($0,last)
- #
- # Our best guess for the new string is the part of the
- # input line already tested plus the part yet to be tested.
- #
- newStr=Str tstStr
- }
- #
- # Check for any instances of syntax chars at the start of the line
- #
- sub("^[:=}{;]","& ",newStr);
- $0 = newStr
- #
- # allow escaping of significant syntax characters
- #
- gsub("[\\][{]","{")
- gsub("\\:",":")
- gsub("\\;",";")
- gsub("\\=","=")
- gsub("[\\][}]","}")
- #
- # Having insured that interesting chars are surrounded by blanks
- # now tokenize the input line.
- #
- Ntokens = split($0,tokens)
- TK = 1
- if ( DeBug > 3 )
- DBGprintTokens()
- if ( DeBug > 0 ) Depth--
- return Ntokens
- }
- function DBGprintTokens()
- {
- for ( i = 1; i <= Ntokens ; i++ )
- print "tokens[" i "] = " tokens[i] > DeBugFile
- return 0
- }
- function DBGprintArray(array,name) {
- for ( i in array) {
- print name "[" i "] = " array[i] > DeBugFile
- }
- }
- # -------------------------------------------------------------
- # skipToToken
- # read until the passed in token is encountered
- #
- # -------------------------------------------------------------
- function skipToToken(tok)
- {
- if ( DeBug > 0 ) {
- Depth++
- for ( i=1; i < Depth; i++ )
- printf(" ") > DeBugFile
- print "Entering function skipToToken:" > DeBugFile
- }
- while ( nextToken() != tok )
- ;
- if ( DeBug > 0 ) Depth--
- }
- # -------------------------------------------------------------
- # readData
- #
- # -------------------------------------------------------------
- function readData() {
- if ( DeBug > 0 ) {
- Depth++
- for ( i=1; i < Depth; i++ )
- printf(" ") > DeBugFile
- print "Entering function readData" > DeBugFile
- }
- while ( EOF_Reached == 0 ) {
- if ( fileName != FILENAME ) {
- if ( DeBug > 1 ) {
- print "====>Files Changed" > DeBugFile
- print "fileName= " fileName > DeBugFile
- print "FILENAME= " FILENAME > DeBugFile
- }
- fileName = FILENAME
- # skip over defaults section of the new file
- while ( lookAhead() == "{" ) {
- # This should be another default spec
- # skip it. (watch out for syntax errors)
- os = getOS()
- if ( osQual != "defaults" )
- syntaxError("Expected os:defaults found: \"" os ":" osQual "\"")
- #
- # Relax this restriction since we are
- # ignoring this defaults record
- #if ( os == BlockToken )
- # syntaxError("Only one \"defaults\" record allowed per os" )
- skipToToken("}");
- }
- }
- if ( getNextRecord(record) > 0 )
- PRTREC(record);
- # skip remaining os entries for this source
- # sorry no error checking.
- while ( EOF_Reached == 0 && lookAhead() == "{" )
- skipToToken("}")
- if ( DeBug > 1 )
- print "EOF_Reached = " EOF_Reached > DeBugFile
- }
- if ( DeBug > 0 ) Depth--
- }
- # -------------------------------------------------------------
- # getNextRecord
- #
- # this function fills the rec[] array with defaults
- #
- # then it scans for a block that has a token maching
- # BlockToken, or accepts a block with the "default"
- # token. The "default" token is not accepted if
- # defaults are disallowed.
- #
- # finally fillRecord is called to read in the lines
- # in the block and override the entries in the rec[] array.
- #
- # -------------------------------------------------------------
- function getNextRecord(rec) {
- if ( DeBug > 0 ) {
- Depth++
- for ( i=1; i < Depth; i++ )
- printf(" ") > DeBugFile
- print "Entering function getNextRecord:" > DeBugFile
- }
- # fill with defaults
- for ( i in defaults )
- rec[i] = defaults[i];
- do {
- src = nextToken()
- if ( DeBug > 2 )
- print "src=" src > DeBugFile
- # Allow special characters to appear in src names if they have been backslashed
- # if ( src ~ /[{:=}]/ )
- # syntaxError("Invalid source: \"" src "\"");
- do {
- os = getOS()
- if ( DeBug > 1 ) {
- print "Got os " os " and qual= " osQual > DeBugFile
- print "NR= " NR " : " $0 > DeBugFile
- }
- if (( os != BlockToken || osQual == "not" ) \
- && ( os != "default" || UseDefaultBlocks != "Y" ) ) {
- if ( DeBug > 2)
- print "Skipping to end of os rec" > DeBugFile
- skipToToken("}");
- }
- if ( EOF_Reached == 1 || fileName != FILENAME ){
- if ( DeBug > 0 ) Depth--
- return 0
- }
- if ( DeBug > 2 )
- print "Look Ahead is: " tokens[TK] > DeBugFile
- } while ( lookAhead() == "{" )
- } while (( os != BlockToken ) && ( os != "default" || UseDefaultBlocks != "Y"))
- if ( DeBug > 2)
- print "About to call fillRecord" > DeBugFile
- fillRecord(rec)
- if ( DeBug > 0 ) Depth--
- return 1
- }
- function fillRecord(rec) {
- if ( DeBug > 0 ) {
- Depth++
- for ( i=1; i < Depth; i++ )
- printf(" ") > DeBugFile
- print "Entering fillRecord:" > DeBugFile
- }
- tempEntry = ""
- do {
- if ( tempEntry != "" ) {
- keyword = tempEntry;
- tempEntry = ""
- } else
- keyword = nextToken();
- if ( keyword == "}" )
- break;
- if ( "=" != nextToken())
- syntaxError("Keyword: " keyword " not followed by \"=\"");
- tempEntry = nextToken();
- if ( lookAhead() == "=" )
- rec[keyword] = ""
- else {
- rec[keyword] = tempEntry
- tempEntry = ""
- }
- } while (1)
- #
- # check for source entry
- # THIS IMPLIES KNOWLEDGE OF .db FILE ENTRIES!!
- if ( DeBug > 2)
- print "TYPE= " rec[TypDefault] > DeBugFile
- if ( src == "-" )
- if ( rec[TypDefault]=="directory" || rec[TypDefault]=="empty_dir")
- {
- # no source required for a directory
- if ( rec[SrcDefault] != "" )
- syntaxError(SrcDefault " \"" rec[SrcDefault] "\" specified for a directory.")
- if ( rec[LnkDefault] != "" )
- syntaxError(LnkDefault " \"" rec[LnkDefault] "\" specfied for a directory.")
-
- rec[SrcDefault] = src;
- } else if ( rec["status"] == "---cu-" ) {
- # This is used for some reason (X11-SERV.db)
- if ( rec[SrcDefault] != "" )
- syntaxError( "File: \"" rec["install_target"] "\" with special status: \"---cu-\" should have no source.");
- } else
- syntaxError("Invalid source: \"" src "\" for type: \"" rec[TypDefault] )
- else if ( rec[TypDefault] ~ /link/ )
- if ( src ~ /^\// || src ~ /^\./ ) {
- if ( rec[SrcDefault] != "")
- syntaxError( SrcDefault ": \"" rec[SrcDefault] "\" specified for link: \"" src "\"")
- if ( rec[LnkDefault] == "" )
- rec[LnkDefault]=src;
- } else
- syntaxError("Invalid source: \"" src "\" for type: \"" rec[TypDefault] "\"")
- else if ( rec[TypDefault] == "file" || rec[TypDefault] == "control" )
- rec[SrcDefault] = src;
- else
- syntaxError("Unrecognized type:\"" rec[TypDefault] "\"")
- if ( DeBug > 0 ) Depth--
-
- }
- # -------------------------------------------------------------
- # printDB
- # Print records in ".db" format
- # -------------------------------------------------------------
- function printDb(rec) {
- if ( DeBug > 0 ) {
- Depth++
- for ( i=1; i < Depth; i++ )
- printf(" ") > DeBugFile
- print "Entering printDb:" > DeBugFile
- }
- # NumEntries should be one greater than the number of defaults
- # read in.
- for ( i = 1; i< NumEntries; i++ ) {
- printf("%-40s %s %s\n",defOrder[i], ":",rec[defOrder[i]])
- }
- print "#"
- if ( DeBug > 0 ) Depth--
- }
- # -------------------------------------------------------------
- # printLst
- # Print records in ".lst" format
- # -------------------------------------------------------------
- function printLst(rec) {
- if ( DeBug > 0 ) {
- Depth++
- for ( i=1; i < Depth; i++ )
- printf(" ") > DeBugFile
- print "Entering printLst:" > DeBugFile
- }
- if ( rec[TypDefault] ~ /link/ )
- Source = LnkDefault
- else
- Source = SrcDefault
- printf("%s %s %s %s %s %s %s %s %s\n",
- rec[ DestDefault],
- rec[ ModeDefault ],
- rec[ Source ],
- rec[ TypDefault ],
- rec[ OwnerDefault ],
- rec[ GroupDefault ],
- rec[ "status" ],
- rec[ "processor" ],
- rec[ "responsible_project" ] )
-
- if ( DeBug > 0 ) Depth--
- }
- # -------------------------------------------------------------
- # printGather
- # print records in one of the formats expected by Gather.ksh
- # (Jim Andreas print routine).
- # -------------------------------------------------------------
- function printGather(rec) {
- # print "Entering printRecord: "
- if (( BlockToken == "hp-ux" ) && ( rec[ "processor" ] != "378" ))
- {
- if ( index( rec[ "processor" ], Machine ) == 0 )
- {
- #printf( "skipping %s, Machine %s machines %s\n", src, Machine, rec[ "processor" ] );
- return
- }
- }
- if ( action == "toSDD" )
- {
- if ( rec[ "type" ] == "file" )
- {
- printf("%s:F:%s:%s:%s:*::\n",
- rec[ "install_target" ], rec[ "owner" ],
- rec[ "group" ], rec[ "mode" ])
- }
- }
- else if ( action == "toReleaseTree" )
- {
- if ( ( rec[ "type" ] == "hard_link" ) ||
- ( rec[ "type" ] == "sym_link" ) ||
- ( rec[ "type" ] == "file" ) )
- {
- #
- # if this is a link, then fudge a source file for Gather.ksh
- # to check on. Really we are linking two dest files together
- # so the hack is to get around the check in Gather.ksh
- #
- if ( ( rec[ "type" ] == "hard_link" ) ||
- ( rec[ "type" ] == "sym_link" ) )
- {
- printf( " {s}%s {d}%s\n", "-", rec[ "install_target" ] );
- }
- else if ( length( src ) > 34 )
- printf( " {s}%s {d}%s\n", src, rec[ "install_target" ] );
- else
- printf( " {s}%-34s {d}%s\n", src, rec[ "install_target" ] );
- if ( rec[ "install_rule_name" ] == "c-" )
- {
- printf( "compress -c < {s}%s > {d}%s\n", src,
- rec[ "install_target" ] );
- }
- else if ( rec[ "type" ] == "sym_link" )
- {
- printf( "ln -s %s {d}%s\n", src,
- rec[ "install_target" ] );
- }
- else if ( rec[ "type" ] == "hard_link" )
- {
- printf( "ln {d}%s {d}%s\n", src,
- rec[ "install_target" ] );
- }
- else if ( rec[ "uncompress" ] == "true" )
- {
- printf( "uncompress -c < {s}%s > {d}%s\n", src,
- rec[ "install_target" ] );
- }
- else if ( length( src ) > 34 )
- {
- printf( "cp {s}%s {d}%s\n", src,
- rec[ "install_target" ] );
- }
- else
- {
- printf( "cp {s}%-34s {d}%s\n", src,
- rec[ "install_target" ] );
- }
- printf( "%s %s %s\n", rec[ "owner" ], rec[ "group" ], rec[ "mode" ])
- rec[ "install_rule_name" ] = "";
- rec[ "uncompress" ] = "";
- }
- }
- else if ( action == "toDeliverArgs" )
- {
- temp = rec[ "install_target" ];
- m = n = index( temp, "/" );
- while ( n != 0 )
- {
- temp = substr( temp, n+1 );
- n = index( temp, "/" );
- m += n;
- }
- dirnametarget = substr( rec[ "install_target" ], 1, m-1 );
- if ( length( rec[ "install_target" ] ) > 40 )
- {
- printf("%s -d .%s\n", rec[ "install_target" ], dirnametarget );
- }
- else
- {
- printf("%-40s -d .%s\n", rec[ "install_target" ], dirnametarget );
- }
- }
- else if ( action == "toCheckBuild" )
- {
- # print "Entering printRecord - toCheckBuild: "
- #
- # skip any link info
- #
- if ( rec[ "type" ] == "file" )
- {
- #
- # just print the source path for the checker tool
- #
- printf("%s\n", src );
- }
- }
- else if ( action == "toFileList" )
- {
- #
- # skip any link info
- #
- if ( rec[ "type" ] == "file" )
- {
- #
- # print the source and install_target for the human person
- #
- if ( length( src ) > 40 || length( rec[ "install_target" ] ) > 40 )
- {
- printf("%s -> %s %s\n", src,
- rec[ "install_target" ], rec[ "mode" ] );
- }
- else
- {
- printf("%-40s -> %-40s %s\n", src,
- rec[ "install_target" ], rec[ "mode" ] );
- }
- }
- }
- else if ( action == "toTargetList" )
- {
- #
- # skip any link info
- #
- if ( rec[ "type" ] == "file" )
- {
- #
- # just print the install_target
- #
- printf("%s\n", rec[ "install_target" ] );
- }
- }
- }
|