use constant PL_NORMAL => 0x00000000; # no html modifiers use constant PL_RED => 0x00000001; # print to log in red text use constant PL_BLUE => 0x00000002; # print to log in blue text use constant PL_GREEN => 0x00000004; # print to log in green text use constant PL_ORANGE => 0x00000008; # print to log in orange text use constant PL_PURPLE => 0x00000010; # print to log in purple text use constant PL_GRAY => 0x00000020; # print to log in gray text use constant PL_VERYLARGE => 0x00000040; # print to log in very large font html use constant PL_LARGE => 0x00000080; # print to log in large font html use constant PL_BOLD => 0x00000100; # print to log in BOLD html use constant PL_ITALIC => 0x00000200; # print to log in italic html use constant PL_MSG => 0x00000400; # print to build message as well use constant PL_NOSTD => 0x00000800; # don't print to console output use constant PL_NOLOG => 0x00001000; # don't print to log use constant PL_BOOKMARK => 0x00002000; # bookmark to build message use constant PL_NOTAG => 0x00004000; # remove html tags before teeing to console use constant PL_STDERR => 0x00008000; # print to STDERR instead or STDOUT use constant PL_FLUSH => 0x00010000; # flush buffers after printing use constant PL_VERBOSE => 0x00020000; # print only if in verbose mode (in purple) use constant PL_SETERROR => 0x00040000; # store current string in $ERROR (no pre-formatting) use constant PL_MSGCONCAT => 0x00080000; # msg concatination (don't automatically prefix w/
) use constant PL_ADDREF => 0x00100000; # additional reference; concatenate any href with existing ref use constant PL_HEADER => PL_VERYLARGE | PL_BOLD; use constant PL_SUBHEADER => PL_LARGE | PL_BOLD; use constant PL_WARNING => PL_ORANGE | PL_STDERR | PL_SETERROR; use constant PL_ERROR => PL_RED | PL_STDERR | PL_SETERROR; use constant PL_BIGWARNING => PL_ORANGE | PL_STDERR | PL_BOLD | PL_MSG | PL_BOOKMARK | PL_NOTAG; use constant PL_BIGERROR => PL_RED | PL_STDERR | PL_BOLD | PL_MSG | PL_BOOKMARK | PL_NOTAG; use constant PL_MSGONLY => PL_MSG | PL_NOLOG | PL_NOSTD; #TODO PL_BIGHEADER #################################################################################### # PrintL() # multi-option print, options listed with constants at top of library # Input: output string as first var, options as second var # (if null, PL_NORMAL assumed) # a-jbilas, 08/08/99 - created #################################################################################### sub PrintL($;$) { my($sMsg, $sModifiers) = @_; my($sHead) = ""; my($sFoot) = ""; # skip rest of function if just printing to console and log if (($sModifiers eq "") || ($sModifiers == PL_NORMAL)) { print(STDOUT $sMsg); # $CONSOLE->Write($sMsg); if ($fhBuildLog) { my($tmp) = $sMsg; $tmp =~ s/\n/
\n/g; $fhBuildLog->print($tmp); } return(); } if ($sModifiers & PL_VERBOSE) { if ($bVerbose) { $sModifiers = $sModifiers | PL_PURPLE; } else { return(); } } if ($sModifiers & PL_SETERROR) { SetError($sMsg, ($sModifiers & PL_MSGCONCAT ? 1 : 0)); } # color modifiers if ($sModifiers & PL_RED) { $sHead = ''.$sHead; $sFoot = $sFoot.''; } elsif ($sModifiers & PL_BLUE) { $sHead = ''.$sHead; $sFoot = $sFoot.''; } elsif ($sModifiers & PL_GREEN) { $sHead = ''.$sHead; $sFoot = $sFoot.''; } elsif ($sModifiers & PL_PURPLE) { $sHead = ''.$sHead; $sFoot = $sFoot.''; } elsif ($sModifiers & PL_ORANGE) { $sHead = ''.$sHead; $sFoot = $sFoot.''; } elsif ($sModifiers & PL_GRAY) { $sHead = ''.$sHead; $sFoot = $sFoot.''; } # font modifiers if ($sModifiers & PL_LARGE) { $sHead = ''.$sHead; $sFoot = $sFoot.''; } elsif ($sModifiers & PL_VERYLARGE) { $sHead = ''.$sHead; $sFoot = $sFoot.''; } if ($sModifiers & PL_BOLD) { $sHead = ''.$sHead; $sFoot = $sFoot.''; } if ($sModifiers & PL_ITALIC) { $sHead = ''.$sHead; $sFoot = $sFoot.''; } # print to strBuildMsg if ($sModifiers & PL_MSG) { if (!($sModifiers & PL_MSGCONCAT) && ($sMsg !~ /
/i)) { $strBuildMsg .= "
"; } if ($sModifiers & PL_BOOKMARK) { $strBuildMsg .= Bookmark($sHead.$sMsg.$sFoot, (PL_ADDREF & $sModifiers)); } else { $strBuildMsg .= $sHead.$sMsg.$sFoot."\n"; } } # print to log if ($fhBuildLog && !($sModifiers & PL_NOLOG)) { my($tmp) = $sMsg; $tmp =~ s/\n/
\n/g; $fhBuildLog->print($sHead.$tmp.$sFoot); } # print to console if (!($sModifiers & PL_NOSTD)) { if ($sModifiers & PL_NOTAG) { $sMsg =~ s/<[^>]*>//g; } if ($sModifiers & PL_STDERR) { # $CONSOLE->Write($sMsg); print(STDERR $sMsg); } else { # $CONSOLE->Write($sMsg); print(STDOUT $sMsg); } } # flush buffers if ($sModifiers & PL_FLUSH) { if ($fhBuildLog && !($sModifiers & PL_NOLOG)) { $fhBuildLog->flush(); } if (!($sModifiers & PL_NOSTD)) { if ($sModifiers & PL_STDERR) { # TODO: how to flush STDERR? } else { # TODO: how to flush STDOUT? } } } } sub PrintLTip($$;$) { if ($bDHTMLActive) { my($tip) = $_[1]; # (, ), ', ", and \ not allowed in tooltips captions $tip =~ s/\(/\/g; $tip =~ s/\"/\*/g; $tip =~ s/\'/\*/g; $tip =~ s/\\/\//g; # print log and message w/ tooltips PrintL("
".$_[0]."<\/a>", $_[2] | PL_NOSTD | PL_ADDREF | PL_FLUSH); # print console output wo/ tooltips (and don't re-seterror()) PrintL($_[0], (($_[2] | PL_NOLOG) - ($_[2] & PL_MSG) - ($_[2] & PL_SETERROR))); } else { PrintL($_[0], $_[2]); SetError($_[1]); } } $__IITPRINTLPM = 1; 1;