Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- # qsutil/breakup -- self expanding paste archive
- #
- # CREATED 2015/11/26-08:46:54 UTC
- #
- # arguments:
- # "-h" -- display help
- # "-help" -- display help (same as -h)
- # "-O<odir>" -- output directory
- # "-tail" -- remove subdirectory from individual files
- # "-x" -- extract files
- #
- # "-tab" -- tab control
- # 0 -- no change
- # 1 -- create tabs from spaces
- # 2 -- expand tabs to spaces at beginning of line
- # 3 -- expand tabs to spaces everywhere
- #
- # installation/extraction instructions:
- # (1) save this file to /where_ever_you_want
- # (2) perl /where_ever_you_want
- # (3) if perl not installed, try "yum install perl" [or equiv for your sys]
- # and repeat (2)
- #
- # how to extract manually:
- # after the data __DATA__ line there are optional default option lines
- #
- # each file is preceeded by:
- # % <file>
- # and the lines after that do _not_ start with "%" are the data for that file
- #
- # for example:
- # % file1
- # file1's line 1 ...
- # file1's line 2 ...
- # ...
- # file1's line n...
- # % file2
- # file2's line 1 ...
- # file2's line 2 ...
- # ...
- # file2's line n...
- master(@ARGV);
- exit(0);
- # master -- master control
- sub master
- {
- my(@argv) = @_;
- my($esc,$bf);
- my($otail,$ofile,$xfsrc,$xfdata,$xfdst);
- my($lno,$bytot,$bycnt);
- $pgmfile = $0;
- $pgmtail = filetail($pgmfile);
- select(STDOUT);
- $| = 1;
- select(STDERR);
- $| = 1;
- $esc = "%";
- open($xfsrc,"<$pgmfile");
- $xfdata = "breakup::DATA";
- $xfdata = \*$xfdata;
- $datapos = tell($xfdata);
- while ($bf = <$xfdata>) {
- $bycnt = length($bf);
- # process separater line
- if ($bf =~ s/^$esc\s+//) {
- if (defined($otail)) {
- printf("%d lines %d chars\n",$lno,$bytot)
- }
- else {
- optget(\@argv);
- if (defined($opt_h)) {
- usage($xfsrc);
- $opt_x = 0;
- }
- $opt_tail = 1
- if ($opt_O eq "-");
- }
- $otail = $bf;
- chomp($otail);
- undef($lno);
- undef($bytot);
- {
- $ofile = filetail($ofile)
- if ($opt_tail);
- $ofile = $otail;
- last if ($opt_O eq "-");
- last if ($opt_O eq "");
- $ofile = "$opt_O/$otail";
- }
- printf("%s %s -- ",
- $opt_x ? "EXTRACT" : "LIST",$ofile);
- if ($opt_x) {
- unless (open($xfdst,">$ofile")) {
- printf("$pgmtail: unable to open '%s' -- $!\n",$ofile);
- exit(1);
- }
- }
- next;
- }
- # handle data line
- if (defined($otail)) {
- ++$lno;
- $bytot += $bycnt;
- next unless ($opt_x);
- $bf = tabfix($bf)
- if ($opt_tab);
- print($xfdst $bf);
- next;
- }
- # handle default options
- if ($bf =~ /^-/) {
- chomp($bf);
- optget($bf);
- next;
- }
- # FIXME/CAE -- this is now junk/bad data
- printf("$pgmtail: INFO %s",$bf);
- }
- printf("%d lines %d chars\n",$lno,$bytot)
- if (defined($otail));
- {
- last if ($opt_x);
- last if ($opt_h);
- printf("$pgmtail: rerun with -h to get help\n");
- printf("$pgmtail: rerun with -x to actually extract files\n");
- }
- close($xfsrc);
- }
- # optget -- decode command line options
- sub optget
- {
- my($argv) = @_;
- $argv = [$argv]
- unless (ref($argv));
- while (1) {
- vbqdash($argv);
- vbqstrdcd($_,"-h",1,\$opt_h);
- vbqstrdcd($_,"-O","-",\$opt_O);
- vbqnumdcd($_,"-tab",1,\$opt_tab);
- vbqnumdcd($_,"-tail",1,\$opt_tail);
- vbqnumdcd($_,"-x",1,\$opt_x);
- usage();
- }
- }
- # tabfix -- fix up tabs
- sub tabfix
- {
- my($rhs) = @_;
- my($pre);
- if ($bf =~ s/^(\s+)//) {
- $pre = $1;
- $pre =~ s/ /\t/g;
- $bf = $pre . $bf;
- }
- $bf;
- }
- # usage -- show usage
- sub usage
- {
- my($xfsrc) = @_;
- seek($xfsrc,0,0);
- while ($bf = <$xfsrc>) {
- chomp($bf);
- next if ($bf =~ /^#!/);
- last unless ($bf =~ s/^# ?//);
- print($bf,"\n");
- }
- }
- sub vbqdash
- {
- my($ptr) = @_;
- my($opt);
- $opt = $ptr->[0];
- last unless ($opt =~ /^-/);
- shift(@$ptr);
- last if ($opt eq "--");
- $_ = $opt
- unless (defined(wantarray));
- $opt;
- }
- sub vbqnumdcd
- {
- my($bf,$key,$dft,$var) = @_;
- if ($bf =~ /^$key(.*)$/) {
- my($val) = $1;
- $val =~ s/^=//s;
- $val = $dft
- if ($val eq "");
- $val += 0;
- vbqchk($var,"vbqnumdcd");
- $$var = $val;
- next;
- }
- }
- sub vbqstrdcd
- {
- my($bf,$key,$dft,$var) = @_;
- if ($bf =~ /^$key(.*)$/s) {
- my($val) = $1;
- $val =~ s/^=//;
- $val = $dft
- if ($val eq "");
- vbqchk($var,"vbqstrdcd");
- $$var = $val
- if (defined($val));
- next;
- }
- }
- sub vbqchk
- # ptr -- pointer to check
- # reason -- reason for call
- {
- my($ptr,$reason) = @_;
- my($typ);
- my($ok);
- if (defined(&blesscore)) {
- $typ = blesscore($ptr);
- }
- else {
- $typ = $ptr;
- $typ =~ s/[(].+$//;
- }
- if ($reason =~ /^vbqv/) {
- $ok = ($typ eq "ARRAY");
- }
- else {
- $ok = ($typ eq "SCALAR");
- }
- unless ($ok) {
- $ptr = prtstr($ptr)
- if (defined(&prtstr));
- vbqfault("!vbqchk: invalid pointer -- ptr=%s reason='%s'\n",
- $ptr,$reason);
- }
- }
- sub vbqusage
- {
- my($opt,$reason) = @_;
- if ($reason =~ s/^!//) {
- vbqzprtx("$reason: unknown option -- '%s'\n",$opt);
- }
- else {
- vbqfault("!$reason: unknown option -- '%s'\n",$opt);
- }
- }
- sub vbqzprtx
- {
- goto &_zprtx
- if (defined(&_zprtx));
- printf(STDERR @_);
- }
- sub vbqfault
- {
- goto &sysfault
- if (defined(&sysfault));
- vbqzprtx(@_);
- exit(1);
- }
- sub filetail
- {
- my($file) = @_;
- $file =~ s,.*/,,g;
- $file;
- }
- package breakup;
- __DATA__
- % ./bld.rdb
- # qsoft/bld.rdb -- qsoft project control
- [init::bld]
- m5mpath m5mcom
- ###global _USE_QRNG_PAIR_=0
- global _USE_QRNG_PAIR_=1
- global _USE_QRNG_WRAPVP_=1
- import std
- xppignore shwlib
- [BLD_CC::gcc]
- pgmcmdcc gcc
- pgmcmdas as
- pgmcmdar ar
- pgmcmdld ld
- pgmO -gdwarf-2
- pgmO -O2
- pgmopt -fno-strict-aliasing
- pgmopt -fno-diagnostics-color
- # NOTE: we now need this to prevent inlining (enabled at -O2)
- pgmopt -fno-inline-small-functions
- # NOTE: we now need this to prevent inlining (enabled at -O3)
- pgmopt -fno-inline-functions
- [BLD_CC::clang]
- pgmcmdcc clang
- pgmcmdas as
- pgmcmdar ar
- pgmcmdld ld
- pgmO -gdwarf-2
- pgmO -O2
- pgmopt -fno-strict-aliasing
- # NOTE: we now need this to prevent inlining (enabled at -O2)
- pgmopt -fno-inline-small-functions
- # NOTE: we now need this to prevent inlining (enabled at -O3)
- pgmopt -fno-inline-functions
- # clang complains about unused arguments (this will screw up dependency
- # generation) and is also quite annoying in general
- pgmopt -Qunused-arguments
- # FIXME/CAE -- don't yet know how clang really identifies itself
- pgmdefine -D__CLANG__
- [default::std]
- pgmdefine -D_USE_ZBLP_
- # we need this to get fputs_unlocked, etc.
- pgmdefine -D_GNU_SOURCE
- pgmopt -Wall
- pgmopt -Werror
- pgmopt -Wno-unknown-pragmas
- pgmopt -Wempty-body
- &pgmloadcc
- pgmsufobj .o
- pgmsuflib .a
- pgmsufdll .so
- ###pgmsufexe .exe
- pgmincpath cpudep
- pgmincpath sysdep
- pgmincsrc yes
- pgmdefine -DCPUDEPOF(_htail)=<${BLDCPUDEP}/_htail>
- pgmdefine -DSYSDEPOF(_htail)=<${BLDSYSDEP}/_htail>
- # FIXME/CAE -- we need this [only] for prtctl float operations
- pgmlibstd -lm
- # special environment variables
- [pgmutc::std]
- vbqnumdcd -dddwait 1 SYSOPT_DDDWAIT
- vbxusage tell pjx program to wait for debugger to attach at startup
- vbqnumdcd -dddkill 10 SYSOPT_DDDKILL
- vbxusage tell pjx program to kill debugger on crash (-1=immediate)
- vbqnumdcd -maps 1 BLPC_MAPS
- vbxusage tell pjx program to dump maps file on crash
- vbqnumdcd -tlk 1 BLPC_TIDLNK
- vbxusage tell pjx program to create tidlnk directory on crash
- vbqnumdcd -utc 1 SYSTVZERO
- vbxusage force all forked processes to use the same universal time zero
- vbqnumdcd -unbuf 1 BLPC_UNBUF
- vbxusage unbuffer trace output
- vbqnumdcd -whobump 10 BLPC_WHOBUMP
- vbxusage increase blpwho traceback level
- vbqnumdcd -Le 1 LIBC_FATAL_STDERR_
- vbxusage tell libc to output fatal errors to stderr (vs. /dev/tty)
- [cpux86]
- pgmtype lib
- pgmdirsrc cpudep
- pgmsrc %.c
- pgmincsrc no
- [syslgx]
- pgmtype lib
- pgmdirsrc sysdep
- pgmsrc %.c
- pgmincsrc no
- pgmlibstd -lpthread
- bldignore yes
- [default::gtk2devel]
- setenv bldpkgcfg gtk+-2.0
- import std
- pgmdefine ${&bldpkgcfg,pgmdefine}
- pgmincpath ${&bldpkgcfg,pgmincpath}
- pgmlibstd ${&bldpkgcfg,pgmlibstd}
- ###section include::gtkdevel
- [default::gtk3devel]
- setenv bldpkgcfg gtk+-3.0
- import std
- pgmdefine ${&bldpkgcfg,pgmdefine}
- pgmincpath ${&bldpkgcfg,pgmincpath}
- pgmlibstd ${&bldpkgcfg,pgmlibstd}
- ###section include::gtkdevel
- [include::gtkdevel]
- import std
- pgmdefine ${&bldpkgcfg,pgmdefine}
- pgmincpath ${&bldpkgcfg,pgmincpath}
- pgmlibstd ${&bldpkgcfg,pgmlibstd}
- ###[syswin]
- ### pgmtype lib
- ### pgmdirsrc sysdep/syswin
- ### pgmsrc %.c
- % ./libs/bld.rdb
- # libs/bld.rdb -- qsoft project control
- [oopslib]
- pgmdirsrc libs
- pgmsrc %.c
- pgmlib srtlib
- pgmlib syslib
- [rbtlib]
- pgmdirsrc libs
- pgmsrc %.c
- pgmlib slblib
- ###pgmlib syslib
- [slblib]
- pgmdirsrc libs
- pgmsrc %.c
- pgmlib syslib
- [srtlib]
- pgmdirsrc libs
- pgmsrc %.c
- ###pgmlib comlib
- pgmlib syslib
- [comlib]
- pgmdirsrc libs
- pgmsrc %.c
- pgmlib cpulib
- ###pgmlib syslib
- [cpulib]
- pgmdirsrc libs
- pgmsrc %.c
- pgmlib ${BLDCPUDEP}
- pgmlib comlib
- [syslib]
- pgmdirsrc libs
- pgmsrc %.c
- pgmobjall yes
- pgmlib ${BLDSYSDEP}
- pgmlib slblib
- pgmlib cpulib
- pgmlib comlib
- [analib]
- pgmdirsrc libs
- pgmlib oopslib
- pgmsrc %.c
- [flxboxlib]
- pgmdirsrc libs
- pgmlib oopslib
- pgmlib rbtlib
- pgmsrc %.c
- [gfxlib]
- pgmdirsrc libs
- pgmlib oopslib
- pgmlibstd -lm
- pgmsrc %.c
- [gfdlib]
- import gtk3devel
- pgmdirsrc libs
- pgmlib oopslib
- # FIXME/CAE -- library ordering is broken -- tiflib needs gfxlib loaded
- # after but we mess that up so we reference tiflib (which we do _not_ need)
- # to correct the hierarchy as a workaround
- ###pgmlib gfxlib
- pgmlib tiflib
- pgmsrc %.c
- [tiflib]
- pgmdirsrc libs
- pgmlib oopslib
- pgmlib gfxlib
- pgmsrc %.c
- pgmlibstd -ltiff
- # special environment variables
- [pgmutc::spy]
- vbqnumdcd -umax 1000 SPYLIB_UMAX
- vbxusage maximum number of units to scan
- vbqvstrdcd -bashme bash SPYLIB_RGXBASH
- vbxusage list of misbehaving programs
- vbqvstrdcd -rgxbad undef SPYLIB_RGXBAD
- [spylib]
- pgmdirsrc libs
- pgmlib syslib
- pgmsrc %.c
- [spyemu]
- pgmtype dll
- unless ($BLD_PIC)
- bldignore yes
- endif
- pgmdirsrc libs
- pgmlib spylib
- ###pgmlib syslib
- pgmsrc %.c
- pgmlibstd -ldl
- pgmlibstd -lresolv
- pgmutc -utc -tlk -whobump -maps -dddkill -bashme
- pgmutc -rgxbad="*Crash Reports/InstallTime"
- pgmutc -rgxbad="*Crash Reports/LastCrash"
- % ./pgms/bld.rdb
- # pgms/bld.rdb -- qsoft project control
- [shazpgm]
- pgmdirsrc pgms
- pgmalias shazam
- pgmlib syslib
- pgmsrc %.c
- [anapgm]
- pgmdirsrc pgms
- pgmalias anasolv
- pgmlib analib
- pgmsrc %.c
- pjxstdout yes
- [flxboxpgm]
- pgmdirsrc pgms
- pgmalias flxbox
- pgmlib flxboxlib
- pgmsrc %.c
- pjxstdout yes
- [gtkhelo]
- import gtk2devel
- pgmtype pgm
- pgmdirsrc pgms
- pgmsrc %.c
- pjxstdout yes
- [cairohelo]
- import gtk2devel
- pgmtype pgm
- pgmdirsrc pgms
- pgmsrc %.c
- pjxstdout yes
- [cairoshape]
- import gtk3devel
- pgmtype pgm
- pgmdirsrc pgms
- pgmsrc %.c
- pjxstdout yes
- [shapepgm]
- pgmdirsrc pgms
- pgmalias shapedemo
- pgmsrc %.c
- pjxstdout yes
- pgmlib gfdlib
- [darshred]
- pgmtype pgm
- pgmdirsrc pgms
- pgmsrc %.c
- pjxstdout yes
- pgmlib gfdlib
- pgmlib tiflib
- % ./tsts/bld.rdb
- # tsts/bld.rdb -- qsoft project control
- [init::tsts]
- m5mpath tsts/m5mtst
- [tstlib]
- pgmdirsrc tsts
- pgmlib syslib
- pgmsrc %.c
- [syslimpgm]
- pgmdirsrc tsts
- pgmlib tstlib
- pgmlib syslib
- pgmalias syslim
- pgmsrc %.c
- [tstblpflt]
- pgmtype pgm
- pgmdirsrc tsts
- pgmlib tstlib
- pgmlib syslib
- pgmsrc %.c
- [tstblpnew]
- pgmtype pgm
- pgmdirsrc tsts
- pgmlib tstlib
- pgmlib oopslib
- pgmlib syslib
- pgmsrc %.c
- [tstblpsig]
- pgmtype pgm
- pgmdirsrc tsts
- pgmlib tstlib
- pgmlib oopslib
- pgmlib syslib
- pgmsrc %.c
- [tstnewtsk]
- pgmtype pgm
- pgmdirsrc tsts
- pgmlib tstlib
- pgmlib syslib
- pgmsrc %.c
- [tstrqx]
- pgmtype pgm
- pgmdirsrc tsts
- pgmlib tstlib
- pgmlib oopslib
- pgmlib syslib
- pgmsrc %.c
- [tstmcor]
- pgmtype pgm
- pgmdirsrc tsts
- pgmlib tstlib
- pgmlib oopslib
- pgmlib syslib
- pgmsrc %.c
- pjxshazam -S
- [tstprtctl]
- pgmtype pgm
- pgmdirsrc tsts
- pgmlib tstlib
- pgmlib syslib
- pgmsrc %.c
- [tstspyemu]
- unless ($BLD_PIC)
- bldignore yes
- endif
- pgmtype pgm
- pgmdirsrc tsts
- pgmlib tstlib
- pgmlib spyemu
- pgmlib oopslib
- pgmlib syslib
- pgmsrc %.c
Advertisement
Add Comment
Please, Sign In to add comment