home *** CD-ROM | disk | FTP | other *** search
/ WordPerfect for Linux Bible / WP4LinuxBible.iso / shared / mm < prev    next >
Text File  |  1999-06-25  |  21KB  |  679 lines

  1.  
  2. Parms=$*; if [ "-n Z" = "`echo -n Z`" ]; then C="\c"; else N="-n"; fi;
  3. Ver=8
  4.  
  5. #LANG -- 
  6. #LANG -- Language Selection Menu (Default-all)
  7. #LANG -- -------------------------------------
  8. #LANG ce ce) English-Canadian
  9. #LANG cf cf) French-Canadian
  10. #LANG de de) German-National
  11. #LANG es es) Spanish
  12. #LANG fr fr) French-National
  13. #LANG it it) Italian
  14. #LANG nl nl) Dutch
  15. #LANG oz oz) English-Australian
  16. #LANG uk uk) English-United Kingdom
  17. #LANG us us) English-US
  18.  
  19. #TAPE 
  20. #TAPE Media Selection Menu (Default-None)
  21. #TAPE -----------------------------------
  22. #TAPE 1) : odt60b   : /wp/tardir   : /dev/rct0         : 1/4 inch
  23. #TAPE 2) : ncrpenta : /wp3/tardir  : /dev/rmt/c0t1d0s0 : 1/4 inch
  24. #TAPE 3) : ibm560   : /wp/tardir   : /dev/rmt0         : 8mm Cartridge
  25. #TAPE 4) : hp715    : /wp/tardir   : /dev/rmt/0m       : 4mm Cartridge
  26. #TAPE 5) : hp50     : /wp/tardir   : /dev/rmt/0m       : 4mm Cartridge
  27.  
  28. do_parm() {
  29.     set dummy $Parms; shift;
  30.     while [ "$1" != "" ]; do
  31.         if   [ "$1" = -t ]; then Type=$2; shift;
  32.         elif [ "$1" = "-f" ]; then Overwrite="y";
  33.         elif [ "$1" = -n ]; then Name=$2; shift;
  34.         elif [ "$1" = -d ]; then Device=$2; shift;
  35.         else wlngs="$wlngs $1"; fi;
  36.         shift;
  37.     done
  38. }
  39.  
  40. getName() {
  41.     Prod2="prod2_$Name"
  42.     while [ "$Name" = "" -o "$Overwrite" != "y" ]; do
  43.         echo; echo $N "  Enter a 1-6 char description: $C"; read Name;
  44.         Prod2="prod2_$Name"
  45.         if [ -d $Prod2 ]; then
  46.             if [ "$Overwrite" != "y" ]; then
  47.                 echo; echo $N "  Warning: $Prod2 exists.  Overwrite? (n) $C";
  48.                 read Overwrite; fi;
  49.             if [ "$Overwrite" != "y" ]; then Name=""; continue; fi;
  50.         else
  51.             Overwrite=y;
  52.         fi;
  53.     done;
  54.     if [ -d $Prod2 ]; then echo "  rm -rf $Prod2;"; rm -rf $Prod2; fi;
  55.     mkdir $Prod2;
  56. }
  57.  
  58. do_main() {
  59.     RSH=rsh;
  60.     for f in `echo $PATH | sed "y/:/ /"`; do
  61.         if [ -x $f/remsh ]; then RSH=remsh; fi;
  62.         if [ -x $f/rcmd ]; then RSH=rcmd; fi;
  63.     done;
  64.  
  65.     if [ -d dat ]; then Type=0; getName; fi;
  66. }
  67.  
  68. do_plat() {                            # try to determine the platform
  69.     Work=`uname -X 2>/dev/null \
  70.     | grep Release | sed 's/.*v//' | sed 's/\..*$//'`;
  71.     if [ "$Work" = "" ]; then
  72.         OSVer=`uname -v | awk '{ print substr($1,1,1) }'`;
  73.     else
  74.         OSVer=$Work; fi;
  75.     SYNam=`uname -r | sed 's/\..*/-/g'`;
  76.     HWNam=`uname -m | awk '{ print substr($1,1,1) }'`;
  77.     set $SYNam $OSVer $HWNam;
  78.  
  79.     PlatInfo=shared/l_info;
  80.     Platform=`grep " Platform " $PlatInfo | sed 's/ * /:/g' \
  81.     | grep ":$1" | grep ":$2" | grep ":$3"'$' | cut -d":" -f1`;
  82.  
  83.     if [ -f .platform ]; then Platform=`cat .platform`; fi;
  84.  
  85.     if [ "$Platform" = "" ]; then
  86.         echo "  Error: Unable to determine the platform.";
  87.         exit;
  88.     fi;
  89. }
  90.  
  91. do_init() {                            # get echo parameters
  92.     UNAME_N=`uname -n`;
  93.     PROD=`pwd`;
  94.  
  95.     List=$PROD/shared/ship;
  96.     sed -n '/^#ifdef ALL$/,/^#endif ALL$/p' $List > $Prod2/TmP;
  97.     sed -n '/^#ifdef '$Platform'$/,/^#endif '$Platform'$/p' $List >> $Prod2/TmP;
  98.     sed -e '/^#/d' -e '/^$/d' $Prod2/TmP | sort -u \
  99.         > $PROD/shared/worklist; rm $Prod2/TmP;
  100.     List=$PROD/shared/worklist;
  101. }
  102.  
  103. dosel() {                            # ask for input
  104.     echo; echo $N "  Enter Selection(s): $C";
  105.     read Parms;
  106.     if [ "$Parms" = "q" ]; then exit; fi;
  107. }
  108.  
  109. do_lngs() {                            # display available languages
  110.     for Dir in `ls lng`; do
  111.         if [ -d lng/$Dir ]; then Dirs="$Dirs$Dir|"; fi; done;
  112.     if [ "$wlngs" = "" ]; then
  113.         grep '^'#LANG mm | egrep "$Dirs--" | sed -n 's/#LANG .. /  /p'; fi;
  114.     if [ "$wlngs" = "" ]; then dosel; do_parm; fi;
  115.     if [ "$wlngs" = "" ]; then
  116.         lngs=`echo $Dirs | sed 's/|/ /g'`;
  117.     else
  118.         for wlng in $wlngs; do
  119.             List=shared/ship;
  120.             for xlng in `egrep "\.$wlng$|$wlng\....$" $List \
  121.             | sed 's/ * / /g' | egrep "lng/" \
  122.             | sed 's/lng\///' | cut -d" " -f3 | sort -u`; do
  123.                 lngs="$lngs $xlng";
  124.             done;
  125.         done;
  126.     fi;
  127.  
  128.     rm -f /tmp/TeMp;
  129.     for lang in $lngs; do echo $lang >> /tmp/TeMp; done;
  130.     lngs="";
  131.     for lang in us `sort -u /tmp/TeMp | sed '/^us$/d'`; do
  132.         lngs="$lngs $lang"; done;
  133.     rm -f /tmp/TeMp;
  134. }
  135.  
  136.  
  137. mklinks() { for file in `cd $1; ls -d * .??* 2>/dev/null`; do
  138.     if [ ! -d $1/$file ]; then ln $1/$file $2; fi; done; }
  139.  
  140. cplink() {
  141.     if [ -d $1 ]; then (cd $1; mkdir -p $2; \
  142.     find . -depth -print | cpio -pdlm $2 2>&1 | grep -v "0 blocks" ); fi; }
  143.  
  144. mk_prd2() {
  145.     echo; echo $N "  Processing... $C";
  146.     cd $Prod2;
  147.     for Enam in manual netscape sdk; do
  148.         cplink ../$Enam ../$Prod2/$Enam;
  149.     done
  150.  
  151.     cplink ../shared ../$Prod2/shared;
  152.     ln shared/install.wp install.wp;
  153.     ln shared/install.wp remove.wp;
  154.  
  155.     mkdir $Platform;
  156.     for Dir in bin dat ins trm; do
  157.         cplink ../$Dir ../$Prod2/$Platform/$Dir;
  158.     done
  159.  
  160.     for lang in $lngs; do
  161.         LNG=$lang;
  162.         echo $N "$lang $C"; echo $LNG >> shared/wplngs;
  163.         cplink ../lng/$LNG ../../$Prod2/$Platform/lng/$LNG;
  164.     done
  165.  
  166.     cplink ../prn/gu ../../$Prod2/$Platform/prn/gu;
  167.     cplink ../prn/ch ../../$Prod2/$Platform/prn/ch;
  168.         
  169.     mkdir READme;
  170.     cp `find . -name readme.\* -print | egrep "/dat/|/bin/"` READme;
  171.     for file in `ls READme/*`; do
  172.         if [ "$file" = READme/readme ]; then continue; fi;
  173.         if [ -f ../../.hostplat ]; then
  174.             ../../`cat ../../.hostplat`/ins/wpdecom $file $file.new;
  175.         else
  176.             $Platform/ins/wpdecom $file $file.new; fi;
  177.         mv $file.new $file; done;
  178.     mv READme readme; chmod 644 readme/*;
  179.     touch shared/cleanup
  180.     
  181.     cd ..; echo;
  182. }
  183.  
  184. do_tape() {                            # see if a tape needs to be written
  185.     while true; do
  186.         sed -n 's/^#TAPE /  /p' mm | sed 's/: /  /g';
  187.         if [ "$Device" = "" ]; then dosel; Device=$Parms; fi;
  188.         if [ "$Device" = "" ]; then return; fi;
  189.         Mch=`grep " $Parms) " mm | cut -d: -f2 | sed 's/ * //g'`;
  190.         Dir=`grep " $Parms) " mm | cut -d: -f3 | sed 's/ * //g'`;
  191.         Dev=`grep " $Parms) " mm | cut -d: -f4 | sed 's/ * //g'`;
  192.  
  193.         if [ "$Mch" = "" -o "$Dev" = "" ]; then
  194.             echo; echo $N "  Error: Invalid Selection $C"; sleep 1; echo;
  195.             Device=""; continue; fi;
  196.  
  197.         if [ "$Device" != "" ]; then Device="";
  198.             if [ "$UNAME_N" = $Mch ]; then
  199.                 echo "(cd $Prod2; tar cf $Dev *;)"
  200.                 (cd $Prod2; tar cf $Dev *;)
  201.             else
  202.                 echo; echo $N "  Copy $Prod2 to $Mch:$Dir? (y/n) $C";
  203.                 read Resp; 
  204.                 if [ "$Resp" = "y" ]; then
  205.                     $RSH $Mch "cd $Dir; rm -rf $Prod2";
  206.                     List="";
  207.                     for DIR in `find $Prod2 -type d -print`; do
  208.                         List="$List $DIR"; done;
  209.                     $RSH $Mch "cd $Dir; mkdir $List; \
  210.                         chmod ug+rwx $List; chmod o+rx $List";
  211.                     tar cf - $Prod2 | $RSH $Mch "cd $Dir; tar xf -";
  212.                 fi;
  213.  
  214.                 while true; do echo;
  215.                     echo $N "  Write $Mch:$Dir/$Prod2 to $Dev? (y/n) $C";
  216.                     read Resp; 
  217.                     if [ "$Resp" = "y" ]; then
  218.                         $RSH $Mch "cd $Dir/$Prod2; tar cf $Dev .";
  219.                     else break; fi;
  220.                 done;
  221.             fi;
  222.         fi;
  223.     done;
  224. }
  225.  
  226. mk_list() {
  227.     Plat=`ls -d */dat | sed 's/\/dat//'`
  228.  
  229.     for file in shared/ship; do
  230.         if [ -f $file ]; then SHIP="$SHIP $file"; fi; done;
  231.  
  232.     cklist() {
  233.         if [ ! -s $Pdir/$1.tmp ]; then
  234.             rm -f $Pdir/$1.tmp; touch $Pdir/$1.list; return; fi;
  235.         cat $Pdir/$1.tmp | while read j1 File Dir j2 j3 j4 j5; do
  236.             if [ -f $Dir/$File -o -f $Plat/$Dir/$File ]; then
  237.                 echo $Dir/$File \
  238.                 | sed -e "s|^bin/|$Plat/bin/|" \
  239.                 -e "s|^dat/|$Plat/dat/|" \
  240.                 -e "s|^ins/|$Plat/ins/|" \
  241.                 -e "s|^lng/|$Plat/lng/|" \
  242.                 -e "s|^prn/|$Plat/prn/|" \
  243.                 -e "s|^trm/|$Plat/trm/|" \
  244.                 >> $Pdir/tmp; fi;
  245.         done;
  246.         sort -u $Pdir/tmp > $Pdir/$1.list; rm -f $Pdir/$1.tmp $Pdir/tmp;
  247.     }
  248.  
  249.     # Create lists for extra features
  250.     find manual -type f -print > $Pdir/g_man.list;
  251.     find sdk -type f -print > $Pdir/g_sdk.list;
  252.     egrep " ins | shared " $SHIP > $Pdir/b_ins.tmp;
  253.     cklist b_ins;
  254.     ls readme/* >> $Pdir/b_ins.list;
  255.  
  256.     for file in shared/l_s shared/l_f shared/l_l shared/wpdm shared/cleanup; do
  257.         if [ -f $file ]; then echo $file >> $Pdir/b_ins.list; fi; done;
  258.  
  259.     # Create lists for required files and language files.
  260.     for R in c g b; do
  261.         grep " $R[sml]. " $SHIP | egrep -v " lng/| prn/| ins | shared " \
  262.             > $Pdir/"$R"_req.tmp
  263.         cklist "$R"_req;
  264.  
  265.         for L in `ls -1d */lng/* | sed -e 's|.*lng/||g' -e 's/\///'`; do
  266.             grep " $R[sml]. " $SHIP | egrep -i "\.$L$|$L\....$" \
  267.             | sed -e '/cmp /d' > $Pdir/"$R"_$L.tmp;
  268.             cklist "$R"_$L;
  269.         done;
  270.     done;
  271.  
  272.     # Add default printers.
  273.     chr="dm3\.|hp1\.|ms1\.|ps1\.|ps2\."; gui="dm03|hp01|ms01|ps01|ps02";
  274.     CHR="DM3\.|HP1\.|MS1\.|PS1\.|PS2\."; GUI="DM03|HP01|MS01|PS01|PS02"
  275.  
  276.     grep "\.all" $SHIP | egrep "$chr" > $Pdir/ptr.tmp;
  277.     cklist ptr;
  278.     mv $Pdir/c_req.list $Pdir/TmP12;
  279.     sort -u $Pdir/TmP12 $Pdir/ptr.list >> $Pdir/c_req.list;
  280.     rm -f $Pdir/TmP12 $Pdir/ptr.list;
  281.  
  282.     grep "\.us\.all" $SHIP | egrep "$gui" > $Pdir/ptr.tmp;
  283.     cklist ptr;
  284.     mv $Pdir/g_req.list $Pdir/TmP12;
  285.     sort -u $Pdir/TmP12 $Pdir/ptr.list >> $Pdir/g_req.list;
  286.     rm -f $Pdir/TmP12 $Pdir/ptr.list;
  287.  
  288.     grep "graphics\.tar"'$' $Pdir/g_req.list > $Pdir/g_gra.list;
  289.     grep -v "graphics\.tar" $Pdir/g_req.list > $Pdir/g_req.Temp;
  290.     grep "wpdecom"'$' $Pdir/b_ins.list >> $Pdir/g_gra.list;
  291.     mv $Pdir/g_req.Temp $Pdir/g_req.list;
  292.  
  293.     ls -1 shared/prs_?.us shared/wplngs* | sed '/prscnv/d' >> $Pdir/b_ins.list;
  294.  
  295.     # Now remake prs*.us files.
  296.     for file in shared/prs_c.us shared/prs_g.us shared/prs_b.us; do
  297.         if [ ! -f $file.bk -a -f $file ]; then
  298.             cp $file $file.bk; rm -f $file; fi; done;
  299.     if [ -f shared/prs_c.us.bk ]; then PRSc=shared/prs_c.us.bk; fi;
  300.     if [ -f shared/prs_g.us.bk ]; then PRSg=shared/prs_g.us.bk; fi;
  301.  
  302.     rm -f $Pdir/Tmp $Pdir/ptr.list;
  303.     sed -e '//d' -e 's///' -e 's/^-/|/' -e 's/ /_/g' $PRSc $PRSg \
  304.     | while read Line; do
  305.         if [ "$Save" = "" ]; then Save="$Line";
  306.         else echo "$Save $Line" >> $Pdir/Tmp; Save=""; fi;
  307.     done;
  308.     egrep "$CHR|$GUI" $Pdir/Tmp | sort -u > $Pdir/Tmp.o;
  309.     mv $Pdir/Tmp.o $Pdir/Tmp;
  310.  
  311.     doprs() {
  312.         echo "  Making $Name..."; rm -f $Name;
  313.         egrep "$1" $Pdir/Tmp | sed 's/ .*$//' | sort -u | while read D; do A="";
  314.             for a in `egrep "$1" $Pdir/Tmp | grep '^'"$D " | sed 's/.* //'`; do
  315.                 A="$A $a"; done;
  316.             echo "" >> $Name;
  317.             echo $D | sed -e 's/_/ /g' -e 's/|/-/' >> $Name;
  318.             echo $A | sed 's/$//' >> $Name;
  319.         done;
  320.         echo  >> $Name;
  321.     }
  322.  
  323.     Name=shared/prs_c.us; if [ -f $Name.bk ]; then doprs "$CHR"; fi;
  324.     Name=shared/prs_g.us;  if [ -f $Name.bk ]; then doprs "$GUI"; fi;
  325.     if [ -f shared/prs_c.us.bk -a -f shared/prs_g.us.bk ]; then
  326.         Name=shared/prs_b.us;   if [ -f $Name.bk ]; then doprs "$CHR|$GUI"; fi;
  327.     else touch shared/prs_b.us; fi;
  328.     rm -f $Pdir/Tmp;
  329. }
  330.  
  331. rm_char1() {
  332.     # remove character files
  333.     grep ' c[sml]. ' shared/ship | while read junk Fil Dir junk; do
  334.         if [ -d $Dir ]; then Plt=.; else Plt=linux; fi;
  335.         if [ -f $Plt/$Dir/$Fil ]; then rm $Plt/$Dir/$Fil; fi;
  336.     done
  337.  
  338.     sed '/ c[sml]. /d' shared/ship > shared/ship.new;
  339.     rm shared/ship; mv shared/ship.new shared/ship;
  340.     rm -f shared/wpprod; echo "2 " > shared/wpprod;
  341. }
  342.  
  343. rm_char2() {
  344.     rm -rf ../free; mkdir ../free;
  345.     sed -n -e '/#ifdef.*linux$/,/#endif.*linux$/p' \
  346.     -e '/#ifdef ALL/,/#endif ALL/p' shared/ship \
  347.     | sed -e '/^#/d' -e '/^$/d' -e 's/ * / /g' -e '/ c[sml]. /d' \
  348.     | cut -d" " -f2,3 | sed 's/\(.*\) \(.*\)/\2\/\1/' \
  349.     | sed 's/^bin/linux\/bin/' \
  350.     | sed 's/^dat/linux\/dat/' \
  351.     | sed 's/^ins/linux\/ins/' \
  352.     | sed 's/^lng/linux\/lng/' \
  353.     | sed 's/^prn/linux\/prn/' \
  354.     | sed -e '/\.\/mm/d' -e '/\.mmdata/d' \
  355.     | sort -u | cpio -pdlm ../free 2>&1 | grep -v "0 blocks";
  356. }
  357.  
  358. rm_misc() {
  359. #m bin xwpdraw xwpdraw
  360. #m lng/?? mprtxt.?? mprtxt...
  361. #m lng/?? wpdr??.hlp wpdr...hlp
  362. #m bin xwpfi xwpfi
  363. #m lng/?? archlrn.?? archlrn...
  364. #m lng/?? archexp.?? archexp...
  365. #m dat address address
  366. #m dat draft.wpg draft.wpg
  367. #m dat form.ltr form.ltr
  368. #m dat letter letter
  369. #m dat newsltr newsltr
  370. #m dat outline outline
  371. #m dat report report
  372. #m dat tables tables
  373. #m bin wpsputl wpsputl
  374. #m lng/?? sputltxt.?? sputltxt...
  375. #m bin wprint wprint
  376. #m bin wpformat wpformat
  377. #m dat readme.lic readme.lic
  378. #m dat readme.flx readme.flx
  379. #m ins check check
  380. #m bin check check
  381. #m dat graphics.tar graphics.tar
  382. grep '^'"#m " $0 | sed 's/^#m //' | while read dir fil1 fil2; do
  383.     rm -f linux/$dir/$fil1;
  384.     grep -v " $fil2 " shared/ship > shared/ship.free;
  385.     rm -f shared/ship; mv shared/ship.free shared/ship;
  386. done
  387. }
  388.  
  389. do_menu() {
  390.     if [ -d linux ]; then echo;
  391.         echo $N "  Create a free Linux prod? (y) $C"; read work;
  392.         if [ "$work" = "" -o "$work" = "y" ]; then
  393.             # remove character files
  394.             rm_char2;    
  395.             # ensure certain files get copied
  396.             find readme install.wp remove.wp -depth -print \
  397.             | cpio -pdlm ../free 2>&1 | grep -v "0 blocks";
  398.             # copy list of languages
  399.             cp shared/wplngs ../free/shared
  400.             cd ../free;
  401.             # enable special free switches
  402.             touch shared/l_s shared/l_f;
  403.             # remove character shiplist entries
  404.             sed '/ c[sml]. /d' shared/ship > shared/ship.new;
  405.             rm shared/ship; mv shared/ship.new shared/ship;
  406.             # mark as gui only
  407.             echo "2 " > shared/wpprod;
  408.             # remove misc files not shipping on free version
  409.             rm_misc;
  410.             # remove Netscape and Manual
  411.             egrep -v "Netscape|Manual" shared/l_extr > shared/TeMp;
  412.             rm shared/l_extr; mv shared/TeMp shared/l_extr;
  413.             rm -rf netscape manual; mkdir netscape manual sdk;
  414.             rm -f shared/cleanup;
  415.             # replace fonts with small set    
  416.             for file in archafm archpfb wp.drs; do
  417.                 rm -f linux/data/$file;
  418.                 rcp pebble:/d8/m8/src/psfonts/free/$file linux/dat/$file;
  419.             done
  420.             # new sizes because of deleted files
  421.             rm shared/l_size;
  422.             rcp pebble:/d8/m8/src/install/data/l_size.free shared/l_size;
  423.             # different eula's with free version
  424.             rcp pebble:/d8/m8/src/data/readme/free.\? shared
  425.             for num in 1 2 3 4 5 6; do
  426.                 rm -f shared/license.$num;
  427.                 mv shared/free.$num shared/license.$num;
  428.             done
  429.             # copy in the new mwp
  430.             rm -f linux/bin/mwp;
  431.             rcp homestead:/wp1/f8/src/wp_s/mwp_d linux/bin/mwp;
  432.             exit;
  433.         fi;
  434.         echo $N "  Create single seat gui-only Linux prod? (y) $C"; read work;
  435.         if [ "$work" = "" -o "$work" = "y" ]; then
  436.             echo "  Removing Character Product...";
  437.             rm_char1; touch shared/l_s;
  438.             echo "  Replacing servers_up and mwp with special versions...";
  439.             rm -f linux/bin/servers_up;
  440.             rcp homestead:/wp1/f8/src/flex/servers_up_s/servers_up_d \
  441.                 linux/bin/servers_up;
  442.             rm -f linux/bin/mwp;
  443.             rcp homestead:/wp1/f8/src/wp_s/mwp_d linux/bin/mwp;
  444. #            echo "  Replacing Splash and Program Screens...";
  445. #            rsh pebble \
  446. #                "cd /d8/m8/src/wpicons/linux_s; tar cf - ??/wpicons.??.cmp" \
  447. #                | (cd linux/lng; tar xf -)
  448. #            for file in `ls linux/lng/*/wpicons.??`; do
  449. #                rm $file;
  450. #                mv $file.cmp $file;
  451. #            done
  452.         fi;
  453.     fi;
  454.     if [ "$Type" = "" ]; then Type=99; fi;
  455.     while [ "$Type" -lt 1 -o "$Type" -gt 3 ]; do
  456.         echo; echo "  SDC Prod2 Creation Menu"; echo;
  457.         echo "  1) Demo Prod    ";
  458.         echo "  2) FTP Prod     ";
  459.         echo "  3) Demo FTP Prod";
  460.         dosel; Type=$Parms
  461.         if [ "$Type" = "" ]; then Type=99; fi;
  462.     done;
  463.     while [ ! -d $Pdir/prod$Ver -o "$Pdir" = "" ]; do
  464.         echo; echo $N "  Where would you like your prod? $C";
  465.         read Pdir;
  466.         if [ "$Pdir" = "" ]; then continue; fi;
  467.         if [ "$Pdir" = "." ]; then Pdir=`pwd`; fi;
  468.         if [ ! -d $Pdir/prod$Ver ]; then mkdir -p $Pdir/prod$Ver; fi;
  469.     done;
  470.     Pdir=$Pdir/prod$Ver;
  471. }
  472.  
  473. incr_cnt() { Cnt=`expr $Cnt + 1`; if [ $Cnt -le 9 ]; then Cnt=0$Cnt; fi; }
  474.  
  475. do_othr() {
  476.     if [ "$Type" = 1 -o "$Type" = 3 ]; then        # Demo
  477.         touch shared/cleanup shared/wpdm;
  478.  
  479.         echo; echo "  Converting $Prod2 to a demo...";
  480.         echo "  Removing Netscape...";
  481.         cp shared/l_extr shared/l_extr.bk; rm shared/l_extr;
  482.         sed '/MultiSelect=Netscape/d' shared/l_extr.bk > shared/l_extr;
  483.         rm shared/l_extr.bk;
  484.         rm -rf netscape;
  485.  
  486.         echo "  Removing licensing files...";
  487.         for suf in lic flx; do
  488.             rm -f */dat/readme.$suf readme/readme.$suf;
  489.             grep -v readme\.$suf shared/ship > shared/ship.new;
  490.             mv shared/ship.new shared/ship;
  491.         done;
  492.         grep -v wpcreatlic shared/ship > shared/ship.new;
  493.         mv shared/ship.new shared/ship;
  494.         rm -f */bin/wpcreatlic */ins/check;
  495.  
  496.         echo "  Reducing fonts...";
  497.         rcp pebble:/d8/m8/src/psfonts/demo/archafm \
  498.             pebble:/d8/m8/src/psfonts/demo/wp.drs .
  499.         echo "  Reducing Graphics...";
  500.         rcp sun690:/wp7/m7/src/data/graph/graphic1.cmp graphics.tar
  501.         for name in archafm wp.drs graphics.tar; do
  502.             for file in `ls */dat/$name`; do rm $file; cp $name $file; done;
  503.             rm $name;
  504.         done;
  505.     fi;
  506.  
  507.     if [ "$Type" = 2 -o "$Type" = 3 ]; then        # Ftp
  508.         echo; echo "  Preparing files for ftp access...";
  509.  
  510.         touch $Pdir/.`ls -d */ins | sed 's|/.*$||'`;
  511.  
  512.         mk_list;
  513.  
  514.         echo "  Finding Large Files...";
  515.         for File in `sort -u $Pdir/*.list`; do
  516.             Size=`ls -o $File | sed 's/ * /:/g' | cut -d: -f4`;
  517.             if [ $Size -gt 3000000 ]; then
  518.                 Temp=`echo $File | sed 's|graphics\.tar||'`;
  519.                 if [ "$Temp" = $File ]; then Large="$Large $File"; fi;
  520.             fi;
  521.         done;
  522.  
  523.         if   [ "$Platform" = sunos ]; then Opt="-10000";
  524.         elif [ "$Platform" = sco ]; then Opt="-l 10000";
  525.         elif [ "$Platform" = scodt ]; then Opt="";
  526.         else Opt="-b 500000"; fi;
  527.  
  528.         for File in $Large; do
  529.             echo "  Splitting $File..."; rm -f $File??;
  530.             split $Opt $File $File;
  531.             WFile=`grep '^'"$File"'$' $Pdir/*.list | sed 's/:.*$//'`;
  532.             ls -1 $File?? >> $WFile;
  533.         done;
  534.  
  535.         echo $N "  Creating tar files: $C";
  536.         for Tar in `ls $Pdir/*.list | sed 's/\.list//' | sed 's/.*\///'`; do
  537.             echo $N "$Tar$C";
  538.             Cnt=00; Tot=0; Pkg="";
  539.             for File in `cat $Pdir/$Tar.list`; do
  540.                 if [ -f $File"aa" ]; then continue; fi;
  541.                 Size=`ls -o $File | sed 's/ * /:/g' | cut -d: -f4`;
  542.                 Tot=`expr $Tot + $Size`; Pkg="$Pkg $File";
  543.                 if [ $Tot -gt 4000000 ]; then
  544.                     tar cf $Pdir/$Tar$Cnt $Pkg; incr_cnt; Tot=0;Pkg="";fi;
  545.             done;
  546.             if [ "$Pkg" != "" ]; then
  547.                 tar cf $Pdir/$Tar$Cnt $Pkg; fi;
  548.             rm -f $Pdir/$Tar.list;
  549.             BkSp=`echo "$Tar" | sed 's/.//g'`; echo $N "$BkSp$C";
  550.             Spac=`echo "$Tar" | sed 's/./ /g'`; echo $N "$Spac$C";
  551.             echo $N "$BkSp$C";
  552.         done; echo;
  553.  
  554.         cp shared/install.ftp $Pdir/Runme;
  555.         cp shared/readme.ftp $Pdir/Readme;
  556.         cp shared/mm $Pdir/mm;
  557.  
  558.         for File in $Large; do rm -f $File??; done;
  559.     fi;
  560. }
  561.  
  562. resp() { Resp="";
  563.     Work=`echo $* | sed 's/.*(//' | sed 's/).*$//' | sed 's/,/ /g'`;
  564.     while [ "$Resp" = "" ]; do
  565.         echo $N "$* $C"; read Resp; echo;
  566.         if [ "$Resp" = all ]; then Resp=$Work; fi;
  567.         if [ "$Resp" = "" ]; then break; fi;
  568.         for Sel in $Resp; do
  569.             if [ "`echo $Work | sed 's/'$Sel'//'`" = "`echo $Work`" ]; then
  570.                 Resp="";
  571.             fi;
  572.         done;
  573.     done;
  574. }
  575.  
  576. dolang() {
  577.     for l in $L; do
  578.         LL="$LL "`egrep "\.$l$|$l\...." shared/ship \
  579.         | grep lng  | grep -v '\.init\.' \
  580.         | sed 's/ * / /g' | grep ' ['$T'].. ' | cut -d" " -f3 \
  581.         | sed 's/lng\///' | sort -u`;
  582.     done;
  583. }
  584.  
  585. do_tar() { echo; echo "  FTP Tar File Creation Menu";
  586.  
  587.     if [ "$1" != "" ]; then Name=$1; shift; fi;
  588.     while [ "$Name" = "" ]; do echo;
  589.         echo $N "  Enter the name you would like for your tar file: $C";
  590.         read Name; done;
  591.  
  592.     if [ "$1" != "" ]; then sl=$1; shift; fi;
  593.     while [ "$sl" != "s" -a "$sl" != "l" ]; do echo;
  594.         echo $N "  What size of tar files? ( s)mall l)arge ): $N2";
  595.         read sl; echo; done;
  596.  
  597.     if [ "$1" != "" ]; then P=$1; shift;
  598.     else resp "  Which products would you like? (g c b)"; P=$Resp; fi;
  599.     if [ "$P" = "x" ]; then P=""; fi;
  600.     if [ "$P" = "b" ]; then P="c g"; fi;
  601.     if [ "$P" != "" ]; then List="$List `ls b_ins* b_req*`";
  602.         for p in $P; do List="$List `ls ${p}_req*`"; done; fi;
  603.  
  604.     Avail=`ls -1 *_* | egrep "ce|cf|de|es|fr|it|nl|oz|uk|us" \
  605.     | sed 's/.*_//' | sed 's/0.*$//' | sort -u`;
  606.  
  607.     if [ "$1" != "" ]; then L=$1; shift;
  608.     else resp "  Which languages? (`echo $Avail`)"; L=$Resp; fi;
  609.     if [ "$L" = "x" ]; then L=""; fi;
  610.     if [ "$L" != "" ]; then List="$List `ls b_ins*`";
  611.         for num in 0 1; do tar xf b_ins0$num shared/ship 2>/dev/null; done;
  612.         if [ "$1" != "" ]; then P=$1; shift; fi;
  613.         while [ "$P" = "" ]; do
  614.             resp "  For which product? (g c b)"; P=$Resp; done;
  615.         if [ "$P" = "x" ]; then P=""; fi;
  616.         if [ "$P" = "b" ]; then P="c g"; fi;
  617.         T=`echo "b $P" | sed 's/ //g'`; dolang; L=$LL;
  618.         for p in $P; do
  619.             for l in $L; do List="$List `ls b_${l}* ${p}_${l}*`"; done;
  620.         done;
  621.     fi;
  622.  
  623.     if [ "$1" != "" ]; then E=$1; shift;
  624.     else resp "  Which extra packages? (man gra sdk)"; E=$Resp; fi;
  625.     if [ "$E" = "x" ]; then E=""; fi;
  626.     if [ "$E" != "" ]; then
  627.         for e in $E; do
  628.             if [ "$e" = man ]; then  List="$List `ls b_ins*`"; fi;
  629.             List="$List `ls *_${e}*`";
  630.         done;
  631.     fi;
  632.  
  633.     rm -f list; for list in $List; do echo $list >> list; done;
  634.     List=`sort -u list | sed 's/ //g' | sed '/^$/d'`; rm -f list;
  635.  
  636.     if [ "$List" != "" ]; then
  637.         if [ "$sl" = s ]; then LIST="";
  638.             Cnt=0; rm -f Moves; echo "$Name" > Name;
  639.             for file in $List; do
  640.                 Size=`ls -o $file | sed 's/ * /:/g' | cut -d: -f4`;
  641.                 if [ "$Size" -gt 3000000 ]; then Cnt=`expr $Cnt + 1`;
  642.                     if [ "$Cnt" -lt 10 ]; then Cnt="0$Cnt"; fi;
  643.                     echo ln $file $Name$Cnt; ln $file $Name$Cnt;
  644.                     echo "$Name$Cnt $file" >> Moves;
  645.                 else
  646.                     LIST="$LIST $file"; fi;
  647.             done;
  648.             set -x; tar cf $Name"00" Runme Readme Moves Name $LIST;
  649.             rm -f Moves Name;
  650.         else
  651.             echo; set -x; tar cf $Name"00" Readme Runme $List; fi;
  652.     fi;
  653. }
  654.  
  655. WCD=`pwd | sed 's|.*/||'`;
  656. if [ "$WCD" = CD$Ver ]; then echo;
  657.     echo "Error: Invalid request for a CD prod."; echo; exit; fi;
  658.  
  659. if [ -f Runme ]; then                # if an ftp work area
  660.     do_tar $*; exit;
  661. elif [ -d dat ]; then                # if a normal prod
  662.     do_parm;
  663.     do_main;
  664.     do_plat;
  665.     do_init;
  666.     do_lngs;
  667.     mk_prd2;
  668.     do_tape;
  669. else                                # if a prod2
  670.     do_parm;
  671.     do_main;
  672.     do_menu;
  673.     do_plat;
  674.     do_othr;
  675. fi;
  676.  
  677. echo;
  678.  
  679.