home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!wupost!sdd.hp.com!network.ucsd.edu!mvb.saic.com!vmsnet-sources
- Newsgroups: vmsnet.sources
- From: "GWDGV1::MOELLER" <moeller@gwdgv1.dnet.gwdg.de>
- Subject: REMPRTSMB 1.1 (VMS V5.5 fix), part 01/01
- Message-ID: <8144908@MVB.SAIC.COM>
- Date: Fri, 11 Sep 1992 19:16:38 GMT
- Lines: 447
- Approved: Mark.Berryman@Mvb.Saic.Com
-
- Submitted-by: "GWDGV1::MOELLER" <moeller@gwdgv1.dnet.gwdg.de>
- Posting-number: Volume 3, Issue 165
- Archive-name: remprtsmb/patch1_01
- Patch-to: remprtsmb: Volume 1, Issue 32
-
- In June of 1991, I posted version 1.0 of REMPRTSMB
- (a symbiont that directs its output to a RMS `file' - possibly via DECnet)
- to INFO-VAX and vmsnet.sources.
-
- Included in this message is a patch to REMPRTSMB.C to make it V1.1
- which is slightly updated to work under VMS V5.5 and V5.5-1 also.
-
- To apply the patch you must unpack this message and, using the unix-like
- patch utility available from the vmsnet.sources archives, issue a command
- similar to: upatch <remprtsmb.diff
-
- NB. I have no idea if REMPRTSMB, or any user-written symbiont at all,
- will work under VMS A5.5, and won't be able to support that
- "transient" version of VMS.
-
- Enjoy,
-
- Wolfgang J. Moeller, GWDG, D-3400 Goettingen, F.R.Germany | Disclaimer ...
- PSI%(0262)45050352008::MOELLER Phone: +49 551 201516 | No claim intended!
- Internet: moeller@gwdgv1.dnet.gwdg.de | This space intentionally left blank.
-
- $! ------------------ CUT HERE -----------------------
- $ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))'
- $!
- $! This archive created by VMS_SHARE Version 8.0
- $! On 11-SEP-1992 12:07:22.99 By user BERRYMAN
- $!
- $! The VMS_SHARE software that created this archive
- $! was written by Andy Harper, Kings College London UK
- $! -- September 1992
- $!
- $! Credit is due to these people for their original ideas:
- $! James Gray, Michael Bednarek
- $!
- $! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER
- $! AND EXECUTE AS A COMMAND PROCEDURE ( @name )
- $!
- $! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING:
- $! 1. REMPRTSMB.DIFF;1
- $!
- $set="set"
- $set symbol/scope=(nolocal,noglobal)
- $f=f$parse("SHARE_TEMP","SYS$SCRATCH:.TMP_"+f$getjpi("","PID"))
- $e="write sys$error ""%UNPACK"", "
- $w="write sys$output ""%UNPACK"", "
- $ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!"
- $ ve=f$getsyi("version")
- $ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start
- $ e "-E-OLDVER, Must run at least VMS 4.4"
- $ v=f$verify(v)
- $ exit 44
- $unpack: subroutine ! P1=filename, P2=checksum, P3=attributes
- $ if f$search(P1) .eqs. "" then $ goto file_absent
- $ e "-W-EXISTS, File ''P1' exists. Skipped."
- $ delete 'f'*
- $ exit
- $file_absent:
- $ if f$parse(P1) .nes. "" then $ goto dirok
- $ dn=f$parse(P1,,,"DIRECTORY")
- $ w "-I-CREDIR, Creating directory ''dn'"
- $ create/dir 'dn'
- $ if $status then $ goto dirok
- $ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped."
- $ delete 'f'*
- $ exit
- $dirok:
- $ w "-I-UNPACK, Unpacking file ''P1'"
- $ n=P1
- $ if P3 .nes. "" then $ n=f
- $ if .not. f$verify() then $ define/user sys$output nl:
- $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='n'
- PROCEDURE GetHex LOCAL x1,x2;x1:=INDEX(t,ERASE_CHARACTER(1))-1;x2:=INDEX(t,
- ERASE_CHARACTER(1))-1;RETURN 16*x1+x2;ENDPROCEDURE;
- PROCEDURE SkipPartsep LOOP ERASE_LINE;EXITIF INDEX(CURRENT_LINE,
- "-+-+-+-+-+-+-+-+")=1;ENDLOOP;ERASE_LINE;ENDPROCEDURE PROCEDURE ProcessLine s:=
- ERASE_CHARACTER(1);LOOP EXITIF CURRENT_OFFSET>=LENGTH(CURRENT_LINE);
- CASE CURRENT_CHARACTER FROM ' ' TO 'z' ["`"]:ERASE_CHARACTER(1);COPY_TEXT(
- ASCII(GetHex));[" "]: ERASE_CHARACTER(1);[OUTRANGE,INRANGE]: MOVE_HORIZONTAL(1)
- ;ENDCASE;ENDLOOP;IF s="V" THEN APPEND_LINE;ENDIF;ENDPROCEDURE;
- PROCEDURE AdvanceLine MOVE_HORIZONTAL(-CURRENT_OFFSET);MOVE_VERTICAL(1);
- ENDPROCEDURE;PROCEDURE Decode POSITION(BEGINNING_OF(b));LOOP EXITIF MARK(NONE)=
- END_OF(b);IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")=1 THEN SkipPartSep;
- ELSE ProcessLine;AdvanceLine;ENDIF;ENDLOOP;ENDPROCEDURE;SET(FACILITY_NAME,
- "UNPACK");SET(SUCCESS,OFF);SET(INFORMATIONAL,OFF);t:="0123456789ABCDEF";f:=
- GET_INFO(COMMAND_LINE,"file_name");b:=CREATE_BUFFER(f,f);Decode;WRITE_FILE(b,
- GET_INFO(COMMAND_LINE,"output_file"));QUIT;
- $ if p3 .eqs. "" then $ goto ck
- $ open/write fdl &f
- $ write fdl "RECORD"
- $ write fdl P3
- $ close fdl
- $ w "-I-CONVRFM, Converting record format to ", P3
- $ convert/fdl=&f &f-1 &P1
- $ck: checksum 'P1'
- $ if checksum$checksum .eqs. P2 then $ exit
- $ e "-E-CHKSMFAIL, Checksum of ''P1' failed."
- $ delete/nolog 'f'*
- $ endsubroutine
- $start:
- $!
- $ create 'f'
- X***`20remprtsmb.c;1
- X---`20remprtsmb.c
- X**************
- X***`202,8
- X`20`20
- X`20`20#define`20ASY_FAB`09`09/*`20<<<`20allegedly`20requires`20VMS`20V5`20<<<
- V`20*/
- X`20`20#ifdef`20ASY_FAB
- X!`20#define`20Version`20"V0.99"
- X`20`20#else
- X`20`20#define`20Version`20"V0.98"
- X`20`20#endif
- X---`202,8`20-----
- X`20`20
- X`20`20#define`20ASY_FAB`09`09/*`20<<<`20allegedly`20requires`20VMS`20V5`20<<<
- V`20*/
- X`20`20#ifdef`20ASY_FAB
- X!`20#define`20Version`20"V1.1a"
- X`20`20#else
- X`20`20#define`20Version`20"V1.1s"
- X`20`20#endif
- X**************
- X***`204,10
- X`20`20#ifdef`20ASY_FAB
- X`20`20#define`20Version`20"V0.99"
- X`20`20#else
- X!`20#define`20Version`20"V0.98"
- X`20`20#endif
- X`20`20
- X`20`20/*****
- X---`204,10`20-----
- X`20`20#ifdef`20ASY_FAB
- X`20`20#define`20Version`20"V1.1a"
- X`20`20#else
- X!`20#define`20Version`20"V1.1s"
- X`20`20#endif
- X`20`20
- X`20`20/*****
- X**************
- X***`2019,25
- X`20`20`09`09`09for`20simplicity,`20use`20same`20SPL/DLT`20setting`20on`20
- X`20`20`09`09`09open`20AND`20close`20(not`20tested`20on`20RSX`20anyway);
- X`20`20V0.99`20.................`20(VMS`20V5)`20#ifdef`20ASY_FAB,`20finally`20i
- Vmplement`20FAB$M_ASY
- X!`20
- X`20`20********
- X`20`20
- X`20`20intended`20use:
- X---`2019,31`20-----
- X`20`20`09`09`09for`20simplicity,`20use`20same`20SPL/DLT`20setting`20on`20
- X`20`20`09`09`09open`20AND`20close`20(not`20tested`20on`20RSX`20anyway);
- X`20`20V0.99`20.................`20(VMS`20V5)`20#ifdef`20ASY_FAB,`20finally`20i
- Vmplement`20FAB$M_ASY
- X!`20V1.0`20`2016-jul-1991`20wjm:`20fix`20"#ifndef`20ASY_FAB"`20compilation`20b
- Vy`20removing
- X!`20`09`09`09a`20superfluous`20statement;
- X!`20`09`09`09if`20"logname"`20ends`20in`20a`20quotation`20mark,`20consider
- X!`20`09`09`09it`20a`20complete`20network`20task`20(or`20foreign`20file)`20spec
- V:
- X!`20`09`09`09don't`20look`20for`20options,`20don't`20append`20"filename.type".
- V
- X!`20V1.1`20`2011-jun-1992`20wjm:`20workarea`20created`20by`20VMS`20V5.5`20SMBS
- VRVSHR`20is`20no`20longer
- X!`20`09`09`09quadword-aligned,`20round`20up`20pointer`20prior`20to`20use.
- X`20`20********
- X`20`20
- X`20`20intended`20use:
- X**************
- X***`2027,33
- X`20`20`09`09/separate=(flag,trailer)`09-
- X`20`20`09`09/on=logname
- X`20`20
- X!`20where`20'logname'`20translates`20to`20something`20like`20"node::dev:`5Bdir
- V`5D/opt"
- X`20`20(one`20of`20"node::"`20or`20"dev:"`20must`20be`20present,`20"`5Bdir`5D"
- V`20and`20"/opt"`20are`20optional).
- X`20`20without`20"/opt",`20the`20output`20files`20will`20be`20named`20"node::de
- Vv:`5Bdir`5DVAX.PRT".
- X`20`20
- X---`2033,43`20-----
- X`20`20`09`09/separate=(flag,trailer)`09-
- X`20`20`09`09/on=logname
- X`20`20
- X!`20where`20'logname'`20translates`20to`20either
- X!`20(a)`20something`20ending`20in`20a`20quotation`20mark`20-`20it`20will`20be
- V`20considered`20a`20complete
- X!`20`09file`20spec`20(e.g.`20network`20foreign`20file`20spec,`20or`20network
- V`20task`20spec).
- X!`20or
- X!`20(b)`20something`20like`20"node::dev:`5Bdir`5D/opt"
- X`20`20(one`20of`20"node::"`20or`20"dev:"`20must`20be`20present,`20"`5Bdir`5D"
- V`20and`20"/opt"`20are`20optional).
- X`20`20without`20"/opt",`20the`20output`20files`20will`20be`20named`20"node::de
- Vv:`5Bdir`5DVAX.PRT".
- X`20`20possible`20options`20('/opt')`20are:
- X**************
- X***`2030,36
- X`20`20where`20'logname'`20translates`20to`20something`20like`20"node::dev:`5Bd
- Vir`5D/opt"
- X`20`20(one`20of`20"node::"`20or`20"dev:"`20must`20be`20present,`20"`5Bdir`5D"
- V`20and`20"/opt"`20are`20optional).
- X`20`20without`20"/opt",`20the`20output`20files`20will`20be`20named`20"node::de
- Vv:`5Bdir`5DVAX.PRT".
- X-`20
- X`20`20possible`20options`20('/opt')`20are:
- X`20`20`09/USERNAME`20`20...`09use`20VMS`20username`20instead`20of`20"VAX"`20fo
- Vr`20default`20filespec.
- X`20`20`09/JOBNAME`20`20`20...`09if`20JOB_NAME`20has`20legal`20"fff.vvv"`20form
- Vat,`20use`20it`20for
- X---`2040,45`20-----
- X`20`20(b)`20something`20like`20"node::dev:`5Bdir`5D/opt"
- X`20`20(one`20of`20"node::"`20or`20"dev:"`20must`20be`20present,`20"`5Bdir`5D"
- V`20and`20"/opt"`20are`20optional).
- X`20`20without`20"/opt",`20the`20output`20files`20will`20be`20named`20"node::de
- Vv:`5Bdir`5DVAX.PRT".
- X`20`20possible`20options`20('/opt')`20are:
- X`20`20`09/USERNAME`20`20...`09use`20VMS`20username`20instead`20of`20"VAX"`20fo
- Vr`20default`20filespec.
- X`20`20`09/JOBNAME`20`20`20...`09if`20JOB_NAME`20has`20legal`20"fff.vvv"`20form
- Vat,`20use`20it`20for
- X**************
- X***`20149,155
- X`20`20`09unsigned`20wk_spool:1;`09/*`20flag:`20open`20with`20SPL`20`26`20DLT
- V`09*/
- X`20`20`7D`20WORKAREA;
- X`20`20
- X!`20/*****/
- X`20`20
- X`20`20static`20void`20rms_ast(struct`20RAB`20*);`09`09/*`20forward`20*/
- X`20`20
- X---`20158,164`20-----
- X`20`20`09unsigned`20wk_spool:1;`09/*`20flag:`20open`20with`20SPL`20`26`20DLT
- V`09*/
- X`20`20`7D`20WORKAREA;
- X`20`20
- X!`20#define`20Q_ALIGN(p)`20(((unsigned)`20p`20+`207)`20`26`20`7E7)`09/*`20roun
- Vd`20up`20to`20multiple`20of`208`20*/
- X`20`20
- X`20`20/*****/
- X`20`20
- X**************
- X***`20151,156
- X`20`20
- X`20`20/*****/
- X`20`20
- X`20`20static`20void`20rms_ast(struct`20RAB`20*);`09`09/*`20forward`20*/
- X`20`20
- X`20`20static`20unsigned`20oq_vm_zone`20=`200;
- X---`20160,167`20-----
- X`20`20
- X`20`20#define`20Q_ALIGN(p)`20(((unsigned)`20p`20+`207)`20`26`20`7E7)`09/*`20ro
- Vund`20up`20to`20multiple`20of`208`20*/
- X`20`20
- X+`20/*****/
- X+`20
- X`20`20static`20void`20rms_ast(struct`20RAB`20*);`09`09/*`20forward`20*/
- X`20`20
- X`20`20static`20unsigned`20oq_vm_zone`20=`200;
- X**************
- X***`20248,254
- X`20`20`09`7D
- X`20`20
- X`20`20`09/*`20start`20-`208`20threads`20maximum`20*/
- X!`20`09status`20=`20psm$print(`268,`20`26BLOCK_SIZE,`20`26sizeof(WORKAREA));
- X`20`20`09return`20status`20`7C`200x10000000;
- X`20`20`7D
- X`20`20
- X---`20259,265`20-----
- X`20`20`09`7D
- X`20`20
- X`20`20`09/*`20start`20-`208`20threads`20maximum`20*/
- X!`20`09status`20=`20psm$print(`268,`20`26BLOCK_SIZE,`20`26(7`20+`20sizeof(WORK
- VAREA)));
- X`20`20`09return`20status`20`7C`200x10000000;
- X`20`20`7D
- X`20`20
- X**************
- X***`20256,262
- X`20`20
- X`20`20static`20unsigned`20remprt_output(
- X`20`20`09char`20**ctxp,`20
- X!`20`09WORKAREA`20*wap,
- X`20`20`09int`20*funcp,
- X`20`20`09DESCR`20*dscp,
- X`20`20`09unsigned`20*argp)
- X---`20267,273`20-----
- X`20`20
- X`20`20static`20unsigned`20remprt_output(
- X`20`20`09char`20**ctxp,`20
- X!`20`09void`20*pwap,
- X`20`20`09int`20*funcp,
- X`20`20`09DESCR`20*dscp,
- X`20`20`09unsigned`20*argp)
- X**************
- X***`20261,266
- X`20`20`09DESCR`20*dscp,
- X`20`20`09unsigned`20*argp)
- X`20`20`7B
- X`20`20`09unsigned`20status;
- X`20`20`09unsigned`20short`20buflen;
- X`20`20`09char`20*bufp;
- X---`20272,278`20-----
- X`20`20`09DESCR`20*dscp,
- X`20`20`09unsigned`20*argp)
- X`20`20`7B
- X+`20`09WORKAREA`20*wap`20=`20(WORKAREA`20*)`20Q_ALIGN(pwap);
- X`20`20`09unsigned`20status;
- X`20`20`09unsigned`20short`20buflen;
- X`20`20`09char`20*bufp;
- X**************
- X***`20309,315
- X`20`20
- X`20`20static`20unsigned`20remprt_input_nop(
- X`20`20`09char`20**ctxp,
- X!`20`09WORKAREA`20*wap,
- X`20`20`09int`20*funcp,
- X`20`20`09DESCR`20*dscp,
- X`20`20`09unsigned`20*argp)
- X---`20321,327`20-----
- X`20`20
- X`20`20static`20unsigned`20remprt_input_nop(
- X`20`20`09char`20**ctxp,
- X!`20`09void`20*pwap,
- X`20`20`09int`20*funcp,
- X`20`20`09DESCR`20*dscp,
- X`20`20`09unsigned`20*argp)
- X**************
- X***`20336,342
- X`20`20
- X`20`20static`20unsigned`20remprt_job_flag(
- X`20`20`09char`20**ctxp,
- X!`20`09WORKAREA`20*wap,
- X`20`20`09int`20*funcp,
- X`20`20`09DESCR`20*dscp,
- X`20`20`09unsigned`20*argp)
- X---`20348,354`20-----
- X`20`20
- X`20`20static`20unsigned`20remprt_job_flag(
- X`20`20`09char`20**ctxp,
- X!`20`09void`20*pwap,
- X`20`20`09int`20*funcp,
- X`20`20`09DESCR`20*dscp,
- X`20`20`09unsigned`20*argp)
- X**************
- X***`20341,346
- X`20`20`09DESCR`20*dscp,
- X`20`20`09unsigned`20*argp)
- X`20`20`7B
- X`20`20`09static`20unsigned`20init_job(char`20**,`20WORKAREA`20*);`09/*`20forwa
- Vrd`20*/
- X`20`20`09static`20void`20abort_job(WORKAREA`20*);`09`09/*`20forward`20*/
- X`20`20
- X---`20353,359`20-----
- X`20`20`09DESCR`20*dscp,
- X`20`20`09unsigned`20*argp)
- X`20`20`7B
- X+`20`09WORKAREA`20*wap`20=`20(WORKAREA`20*)`20Q_ALIGN(pwap);
- X`20`20`09static`20unsigned`20init_job(char`20**,`20WORKAREA`20*);`09/*`20forwa
- Vrd`20*/
- X`20`20`09static`20void`20abort_job(WORKAREA`20*);`09`09/*`20forward`20*/
- X`20`20
- X**************
- X***`20374,380
- X`20`20
- X`20`20static`20unsigned`20remprt_job_trailer(
- X`20`20`09char`20**ctxp,
- X!`20`09WORKAREA`20*wap,
- X`20`20`09int`20*funcp,
- X`20`20`09DESCR`20*dscp,
- X`20`20`09unsigned`20*argp)
- X---`20387,393`20-----
- X`20`20
- X`20`20static`20unsigned`20remprt_job_trailer(
- X`20`20`09char`20**ctxp,
- X!`20`09void`20*pwap,
- X`20`20`09int`20*funcp,
- X`20`20`09DESCR`20*dscp,
- X`20`20`09unsigned`20*argp)
- X**************
- X***`20379,384
- X`20`20`09DESCR`20*dscp,
- X`20`20`09unsigned`20*argp)
- X`20`20`7B
- X`20`20`09static`20unsigned`20close_job(char`20**,`20WORKAREA`20*);`09/*`20forw
- Vard`20*/
- X`20`20`09static`20void`20abort_job(WORKAREA`20*);`09`09/*`20forward`20*/
- X`20`20
- X---`20392,398`20-----
- X`20`20`09DESCR`20*dscp,
- X`20`20`09unsigned`20*argp)
- X`20`20`7B
- X+`20`09WORKAREA`20*wap`20=`20(WORKAREA`20*)`20Q_ALIGN(pwap);
- X`20`20`09static`20unsigned`20close_job(char`20**,`20WORKAREA`20*);`09/*`20forw
- Vard`20*/
- X`20`20`09static`20void`20abort_job(WORKAREA`20*);`09`09/*`20forward`20*/
- X`20`20
- X**************
- X***`20472,477
- X`20`20
- X`20`20`09l`20=`20lnml;
- X`20`20`09line`5Bl`5D`20=`20'\0';
- X`20`20`09for(lp=line;`20*lp`20!=`20'\0';`20lp++)
- X`20`20`09`09*lp`20=`20toupper(*lp);`09/*`20upcase`20device`20`26`20options`20*
- V/
- X`20`20
- X---`20486,497`20-----
- X`20`20
- X`20`20`09l`20=`20lnml;
- X`20`20`09line`5Bl`5D`20=`20'\0';
- X+`20
- X+`20`09if(l`20>`200`20`26`26`20line`5Bl-1`5D`20==`20'"')`20`7B`09`09/*`20quote
- Vd`20output`20spec`20...`20*/
- X+`20`09`09strcpy(wap->wk_file,line);`09/*`20copy`20unchanged`20*/
- X+`20`09`09goto`20file_name_ok;
- X+`20`09`7D
- X+`20
- X`20`20`09for(lp=line;`20*lp`20!=`20'\0';`20lp++)
- X`20`20`09`09*lp`20=`20toupper(*lp);`09/*`20upcase`20device`20`26`20options`20*
- V/
- X`20`20
- X**************
- X***`20775,783
- X`20`20`09`09`7D
- X`20`20#ifndef`20ASY_FAB
- X`20`20`09`09status=sys$create(`26wap->wk_fab);`09/*`20synchronous`09*/
- X-`20`09`09if(wap->wk_spool)`20`7B
- X-`20`09`09`09wap->wk_fab.fab$l_fop`20=`20fop;
- X-`20`09`09`7D
- X`20`20#else
- X`20`20`09`09/*`20asynch.`20$create`20*/
- X`20`20
- X---`20795,800`20-----
- X`20`20`09`09`7D
- X`20`20#ifndef`20ASY_FAB
- X`20`20`09`09status=sys$create(`26wap->wk_fab);`09/*`20synchronous`09*/
- X`20`20#else
- X`20`20`09`09/*`20asynch.`20$create`20*/
- X`20`20
- $ call unpack REMPRTSMB.DIFF;1 625238560 "FORMAT STREAM_LF"
- $ v=f$verify(v)
- $ exit
-