[This message contains several messages. 1. "CVS 1.9.28 for VMS, bug fixes"; Richard Levitte writes: In the patch I just sent, a local change lurked in. Ignore the patches concerning src/cvs.h, src/lock.c and src/main.c, unless you want a hack that makes read-only repositories truly read-only. 2. "CVS 1.9.28, another VMS-related bug". I haven't looked closely at any of this. -kingdon] To: bug-cvs@gnu.org Subject: CVS 1.9.28 for VMS, bug fixes From: Richard Levitte - VMS Whacker Content-Type: Text/Plain; charset=iso-8859-1 Date: Wed, 29 Jul 1998 09:25:03 +0200 First of all, I wanted to correct the bug with the -F switch for commit. What happens on VMS is that if the given logfile has other formats than one of the stream formats (for example variable size record, which is very common for text files), only the first line would be sent to the CVS server. To find the place where a fix was needed was easy, it was even tagged with a FIXME: comment (not removed in my source :-)). At the same time, I read all the comments at the end of README.VMS, and looked a little more at the source, and found there's really no need to have people hack in the source to make it compile. I've done the small changes that fixes the problems mentioned (that includes inserting a much later version of vmsmunch.c and vmsmunch.h, thank you very much). Finally, I got quite irritated when I found my definition of CC being overwritten by the command procedures, so I fixed that too. All is documented in the ChangeLog entries. Index: ChangeLog =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/ChangeLog,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 ChangeLog --- ChangeLog 1998/07/22 04:20:47 1.1.1.2 +++ ChangeLog 1998/07/29 02:38:44 @@ -1,3 +1,10 @@ +Wed Jul 29 04:37:54 1998 Richard Levitte - VMS Whacker + + * README.VMS: Notes added. + + * README.VMS.VAXC$PATH: Added. Contains excerps from the VAX C + Run-Time Library Reference Guide. + 1998-04-28 Jim Kingdon * TESTS: Add note about Solaris sort program (reported by Mark Index: README.VMS =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/README.VMS,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 README.VMS --- README.VMS 1998/07/20 21:14:58 1.1.1.1 +++ README.VMS 1998/07/29 02:17:57 @@ -136,6 +136,12 @@ of course we also need interface(s) which are not locked into any particular editors. +[ The explanation for VAXC$PATH is given in the VAX C Run-Time Library + Reference Guide, the entries about execlp() and execvp(). + + The contents are reproduced in README.VMS.VAXC$PATH. + -- Richard Levitte ] + ---------------------------------------- Notes regarding compiling on VAX/VMS 6.2 (not Alpha) (These are items @@ -145,16 +151,29 @@ * Need to compile lib/getdate.c with vaxc instead of decc to avoid a compiler bugcheck. Therefore one must add SYS$LIBRARY:VAXCRTL/LIBRARY to the link. +[ Incorrect. If that happens to you, you want to upgrade DEC C. I + can imagine DEC C 5.2 bugchecked, it was somewhat buggy anyway, but + it's pretty old. I've done this with DEC C 5.6 with no problem. + -- Richard Levitte ] * In src/ignore.c, change lstat to stat. In vms/filesubr.c, change "#ifdef S_ISLNK" to "#if 0". +[ Erroneous! There'sa better condition in there now, that will only + need to get redone if softlinks are implemented in VMS. + -- Richard Levitte ] * Ignore the warnings in vms/vmsmunch.c; the system include file declares something as an int when it should be void *. Not *our* fault! +[ Resolved by including a newer version of vmsmunch.c! + -- Richard Levitte ] * Remove the #define's of mode_t in vms/vms.h and pid_t in vms/pwd.h. Add "#include " in vms/pwd.h. +[ #define mode_t permanently moved, and only made conditionaly. #define + pid_t moved, and made conditionaly. #include permanently + added. You shouldn't need to do anything more. + -- Richard Levitte ] Credits: Index: README.VMS.VAXC$PATH =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/README.VMS.VAXC$PATH,v diff -u /dev/null 'README.VMS.VAXC$PATH' --- /dev/null Wed Jul 29 09:01:39 1998 +++ README.VMS.VAXC$PATH Wed Jul 29 03:23:44 1998 @@ -0,0 +1,42 @@ + execlp + + The execlp function passes the name of an image to be + activated in a child process. + + Format + + #include processes + + int execlp (char *file_name, char *argn, ...); + + Arguments + + file_name + + Is the file name of a new image to be activated in the + child process. The device and directory specification for + the file is obtained by searching the environment name + VAXC$PATH. + + [...] + execvp + + The execvp function passes the name of an image to be + activated in a child process. + + Format + + #include processes + + int execvp (char *file_name, char *argv[]); + + Arguments + + file_name + + Is the file name of a new image to be activated in the + child process. The device and directory specification for + the file is obtained by searching the environment name + VAXC$PATH. + + [...] Index: diff/ChangeLog =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/diff/ChangeLog,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 ChangeLog --- ChangeLog 1998/07/20 21:15:37 1.1.1.1 +++ ChangeLog 1998/07/29 02:23:06 @@ -1,3 +1,7 @@ +Wed Jul 29 04:23:03 1998 Richard Levitte - VMS Whacker + + * build_diff.com: There's no need at all to define CC globally. + Fri Jan 16 14:58:19 1998 Larry Jones * diff.c, diff3.c: Plug memory leaks. Index: diff/build_diff.com =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/diff/build_diff.com,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 build_diff.com --- build_diff.com 1998/07/20 21:15:38 1.1.1.1 +++ build_diff.com 1998/07/29 02:19:08 @@ -1,4 +1,4 @@ -$ CC :== CC/DEBUG/NOOPTIMIZE/STANDARD=VAXC/DEFINE=HAVE_CONFIG_H- +$ CC := CC/DEBUG/NOOPTIMIZE/STANDARD=VAXC/DEFINE=HAVE_CONFIG_H- /INCLUDE_DIRECTORY=([-],[-.LIB],[-.SRC],[-.VMS])/PREFIX_LIBRARY_ENTRIES=ALL_ENTRIES $ CC diff.c $ CC analyze.c Index: lib/ChangeLog =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/lib/ChangeLog,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 ChangeLog --- ChangeLog 1998/07/20 21:15:06 1.1.1.1 +++ ChangeLog 1998/07/29 03:12:02 @@ -1,3 +1,9 @@ +Wed Jul 29 04:23:39 1998 Richard Levitte - VMS Whacker + + * system.h (CVS_LSTAT): Define as stat on VMS. + + * build_lib.com: There's no need at all to define CC globally. + Tue Mar 24 16:08:00 1998 Ian Lance Taylor * Makefile.in (CFLAGS): Set to @CFLAGS@, not -g. Index: lib/build_lib.com =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/lib/build_lib.com,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 build_lib.com --- build_lib.com 1998/07/20 21:15:20 1.1.1.1 +++ build_lib.com 1998/07/29 02:19:38 @@ -1,4 +1,4 @@ -$ CC :== CC/DEBUG/NOOPTIMIZE/STANDARD=VAXC/DEFINE=HAVE_CONFIG_H- +$ CC := CC/DEBUG/NOOPTIMIZE/STANDARD=VAXC/DEFINE=HAVE_CONFIG_H- /INCLUDE_DIRECTORY=([-],[-.LIB],[-.SRC],[-.VMS])/PREFIX_LIBRARY_ENTRIES=ALL_ENTRIES $ CC fnmatch.c $ CC getdate.c Index: lib/system.h =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/lib/system.h,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 system.h --- system.h 1998/07/20 21:15:18 1.1.1.1 +++ system.h 1998/07/29 06:55:41 @@ -457,7 +457,11 @@ to use lstat in order to handle symbolic links correctly with the PreservePermissions option. -twp */ #ifndef CVS_LSTAT +#ifdef VMS +#define CVS_LSTAT stat +#else #define CVS_LSTAT lstat +#endif #endif #ifndef CVS_UNLINK Index: src/ChangeLog =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/src/ChangeLog,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 ChangeLog --- ChangeLog 1998/07/22 04:21:43 1.1.1.2 +++ ChangeLog 1998/07/29 03:07:05 @@ -1,3 +1,12 @@ +Wed Jul 29 04:21:12 1998 Richard Levitte - VMS Whacker + + * rcs.c (rcsbuf_getid): Extraneous ; removed. + + * ignore.c (ignore_files): VMS has no softlinks, so use stat() + instead of lstat() in that case. + + * build_src.com: There's no need at all to define CC globally. + 1998-05-23 Jim Kingdon * Version 1.9.28. Index: src/build_src.com =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/src/build_src.com,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 build_src.com --- build_src.com 1998/07/20 21:16:38 1.1.1.1 +++ build_src.com 1998/07/29 02:19:53 @@ -1,4 +1,4 @@ -$ CC :== CC/NOOPT/DEB/STANDARD=VAXC/DEFINE=HAVE_CONFIG_H- +$ CC := CC/NOOPT/DEB/STANDARD=VAXC/DEFINE=HAVE_CONFIG_H- /INCLUDE_DIR=([-],[-.VMS],[-.LIB])/PREFIX=ALL $ CC add.c $ CC admin.c Index: src/commit.c =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/src/commit.c,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 commit.c --- commit.c 1998/07/22 04:22:28 1.1.1.2 +++ commit.c 1998/07/29 06:47:12 @@ -419,6 +419,7 @@ { int n, logfd; struct stat statbuf; + char *bufp; if (saved_message) error (1, 0, "cannot specify both a message and a log file"); @@ -430,15 +431,20 @@ if (fstat(logfd, &statbuf) < 0) error (1, errno, "cannot find size of log file %s", logfile); - saved_message = xmalloc (statbuf.st_size + 1); + /* +2 to provide for a possible extra \n */ + bufp = saved_message = xmalloc (statbuf.st_size + 2); - /* FIXME: Should keep reading until EOF, rather than assuming the - first read gets the whole thing. */ - if ((n = read (logfd, saved_message, statbuf.st_size + 1)) < 0) + while ((n = read (logfd, bufp, + (saved_message + statbuf.st_size) - bufp)) > 0) + bufp += n; + if (n < 0) error (1, errno, "cannot read log message from %s", logfile); (void) close (logfd); - saved_message[n] = '\0'; + + if (bufp > saved_message && bufp[-1] != '\n') + *bufp++ = '\n'; + *bufp = '\0'; } #ifdef CLIENT_SUPPORT Index: src/cvs.h =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/src/cvs.h,v retrieving revision 1.1.1.2 retrieving revision 1.3 diff -u -r1.1.1.2 -r1.3 --- cvs.h 1998/07/22 04:22:12 1.1.1.2 +++ cvs.h 1998/07/22 04:27:46 1.3 @@ -383,6 +383,7 @@ extern int trace; /* Show all commands */ extern int noexec; /* Don't modify disk anywhere */ +extern int nolock; /* Don't create any locks (read-only access) */ extern int logoff; /* Don't write history entry */ #ifdef AUTH_SERVER_SUPPORT Index: src/ignore.c =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/src/ignore.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 ignore.c --- ignore.c 1998/07/20 21:16:22 1.1.1.1 +++ ignore.c 1998/07/29 03:55:48 @@ -440,7 +440,12 @@ #ifdef DT_DIR dp->d_type != DT_UNKNOWN || #endif - lstat(file, &sb) != -1) +#ifdef VMS + stat(file, &sb) != -1 +#else + lstat(file, &sb) != -1 +#endif + ) { if ( Index: src/lock.c =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/src/lock.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- lock.c 1998/07/20 21:16:23 1.1.1.1 +++ lock.c 1998/07/20 21:40:36 1.2 @@ -243,7 +243,7 @@ FILE *fp; char *tmp; - if (noexec) + if (noexec || nolock) return (0); /* we only do one directory at a time for read locks! */ @@ -316,7 +316,7 @@ { char *wait_repos; - if (noexec) + if (noexec || nolock) return (0); /* We only know how to do one list at a time */ Index: src/main.c =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/src/main.c,v retrieving revision 1.1.1.2 retrieving revision 1.3 diff -u -r1.1.1.2 -r1.3 --- main.c 1998/07/22 04:22:42 1.1.1.2 +++ main.c 1998/07/22 04:27:48 1.3 @@ -40,6 +40,7 @@ int quiet = 0; int trace = 0; int noexec = 0; +int nolock = 0; int logoff = 0; mode_t cvsumask = UMASK_DFLT; @@ -473,7 +474,7 @@ opterr = 1; while ((c = getopt_long - (argc, argv, "+Qqrwtnlvb:T:e:d:Hfz:s:xa", long_options, &option_index)) + (argc, argv, "+QqrRwtnlvb:T:e:d:Hfz:s:xa", long_options, &option_index)) != EOF) { switch (c) @@ -502,6 +503,9 @@ break; case 'r': cvswrite = 0; + break; + case 'R': + nolock = 1; break; case 'w': cvswrite = 1; Index: src/rcs.c =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/src/rcs.c,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 rcs.c --- rcs.c 1998/07/22 04:22:50 1.1.1.2 +++ rcs.c 1998/07/29 03:06:51 @@ -1404,7 +1404,7 @@ rcsbuf->ptr = ptr; return 1; -#undef my_whitespace; +#undef my_whitespace } /* Read an RCS @-delimited string. Store the result in STRP. */ Index: vms/ChangeLog =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/vms/ChangeLog,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 ChangeLog --- ChangeLog 1998/07/22 04:25:00 1.1.1.2 +++ ChangeLog 1998/07/29 02:34:57 @@ -1,3 +1,19 @@ +Wed Jul 29 04:23:22 1998 Richard Levitte - VMS Whacker + + * vmsmunch.c, vmsmunch.h : Newer source included. + + * pwd.h: Only defined pid_t if not already defined. Before that, + include + + * vms.h: Only defined mode_t if not already defined, and do + this after sys/types.h has been included, not before. Also, + only declare unlink() with VAX C or when the DEC C RTL is + of a version lesser than 7.0. + + * filesubr.c (islink): VMS doesn't do softlink, so return 0 then. + + * build_vms.com: There's no need at all to define CC globally. + 1998-05-12 Jim Meyering * Makefile.in (distclean): New rule to remove Makefile. Index: vms/build_vms.com =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/vms/build_vms.com,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 build_vms.com --- build_vms.com 1998/07/20 21:18:00 1.1.1.1 +++ build_vms.com 1998/07/29 02:19:23 @@ -1,4 +1,4 @@ -$ CC :== CC/DEBUG/NOOPTIMIZE/STANDARD=VAXC/DEFINE=HAVE_CONFIG_H- +$ CC := CC/DEBUG/NOOPTIMIZE/STANDARD=VAXC/DEFINE=HAVE_CONFIG_H- /INCLUDE_DIRECTORY=([-],[-.LIB],[-.SRC],[-.VMS])/PREFIX_LIBRARY_ENTRIES=ALL_ENTRIES $ CC filesubr.c $ CC filutils.c Index: vms/filesubr.c =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/vms/filesubr.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 filesubr.c --- filesubr.c 1998/07/20 21:18:00 1.1.1.1 +++ filesubr.c 1998/07/29 02:27:10 @@ -129,7 +129,7 @@ islink (file) const char *file; { -#ifdef S_ISLNK +#if defined(S_ISLNK) && !defined(VMS) struct stat sb; if (lstat (file, &sb) < 0) Index: vms/pwd.h =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/vms/pwd.h,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 pwd.h --- pwd.h 1998/07/20 21:18:05 1.1.1.1 +++ pwd.h 1998/07/29 01:47:18 @@ -1,6 +1,8 @@ #ifndef _PWD_H #define _PWD_H +#include + /* Trying to declare uid_t is a mess. We tried #include , which only worked on VAX (VMS 6.2, I think), and we tried defining it here which only worked on alpha, I think. In any event, the VMS C library's @@ -8,7 +10,9 @@ the group part of the UIC), so we are better off with higher-level hooks like get_homedir and SYSTEM_GETCALLER. */ +#ifndef __PID_T #define pid_t int +#endif struct passwd { char *pw_name; Index: vms/vms.h =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/vms/vms.h,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 vms.h --- vms.h 1998/07/20 21:18:06 1.1.1.1 +++ vms.h 1998/07/29 01:48:52 @@ -1,9 +1,5 @@ /* Determined from CC RTL function prototypes in online documentation */ -#define mode_t unsigned int - -#define fork(x) vfork(x) - #include #include #include @@ -11,6 +7,12 @@ #include #include +#ifndef __MODE_T +#define mode_t unsigned int +#endif + +#define fork(x) vfork(x) + #define STDIN_FILENO 0 #define STDOUT_FILENO 1 #define STDERR_FILENO 2 @@ -26,7 +28,9 @@ #include "pwd.h" #include "pipe.h" +#if !defined(__DECC) || __CRTL_VER < 70000000 int unlink(char *path); +#endif int link(char *from, char *to); #define stat(a, b) wrapped_stat(a, b) Index: vms/vmsmunch.c =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/vms/vmsmunch.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 vmsmunch.c --- vmsmunch.c 1998/07/20 21:18:06 1.1.1.1 +++ vmsmunch.c 1998/07/29 02:08:07 @@ -1,6 +1,8 @@ +#define module_name VMSMUNCH +#define module_version "V1.3-4" /*--------------------------------------------------------------------------- - VMSmunch.c version 1.3 28 Apr 1992 + VMSmunch.c version 1.3-4 28 Apr 1992 This routine is a blatant and unrepentent appropriation of all the nasty and difficult-to-do and complicated VMS shenanigans which Joe Meadows has @@ -15,6 +17,20 @@ by UnZip (and Zip, possibly), not least among them the utime() function. Read on for details... + 8-May-1998 Richard Levitte + Add code to change the file size (only on fixed + size record files). + + 1-SEP-1994 Richard Levitte + On VAX, atr$l_addr is unsigned long. On AXP, it + is void *. I fixed a workaround. + + If one of the fields given to VMSmunch are NULL, + do not update the corresponding daytime. + + 23-JUL-1994 Richard Levitte + Removed the `revision' item from the attribute list. + 18-JUL-1994 Hunter Goatley Fixed IO$_ACCESS call. @@ -72,6 +88,11 @@ +#ifdef __DECC +#pragma module module_name module_version +#else +#module module_name module_version +#endif /*****************************/ /* Includes, Defines, etc. */ @@ -87,7 +108,15 @@ #include /* this gets created with the c3.0 compiler */ #include "VMSmunch.h" /* GET/SET_TIMES, RTYPE, etc. */ + +#ifdef __DECC +#pragma member_alignment __save +#pragma nomember_alignment +#endif #include "VMSmunch_private.h" /* fatdef.h, etc. */ +#ifdef __DECC +#pragma member_alignment __restore +#endif #define RTYPE fat$r_rtype_overlay.fat$r_rtype_bits #define RATTRIB fat$r_rattrib_overlay.fat$r_rattrib_bits @@ -143,17 +172,23 @@ } bits; } prot; + /* Stupid morons! On Alphas, atr$l_addr is a pointer to void, + while it is an unsigned long on VAX. Argv!!! -- Richard Levitte */ +#ifdef __alpha +typedef void * addr_type; +#else +typedef unsigned long addr_type; +#endif static struct atrdef Atr[] = { - {ATR$S_RECATTR,ATR$C_RECATTR,&Fat}, /* record attributes */ - {ATR$S_UCHAR,ATR$C_UCHAR,&uchar}, /* File characteristics */ - {ATR$S_CREDATE,ATR$C_CREDATE,&Cdate[0]}, /* Creation date */ - {ATR$S_REVDATE,ATR$C_REVDATE,&Rdate[0]}, /* Revision date */ - {ATR$S_EXPDATE,ATR$C_EXPDATE,&Edate[0]}, /* Expiration date */ - {ATR$S_BAKDATE,ATR$C_BAKDATE,&Bdate[0]}, /* Backup date */ - {ATR$S_ASCDATES,ATR$C_ASCDATES,&revisions}, /* number of revisions */ - {ATR$S_FPRO,ATR$C_FPRO,&prot}, /* file protection */ - {ATR$S_UIC,ATR$C_UIC,&uic}, /* file owner */ - {ATR$S_JOURNAL,ATR$C_JOURNAL,&jnl}, /* journal flags */ + {ATR$S_RECATTR,ATR$C_RECATTR,(addr_type)&Fat}, /* record attributes */ + {ATR$S_UCHAR,ATR$C_UCHAR,(addr_type)&uchar}, /* File characteristics */ + {ATR$S_CREDATE,ATR$C_CREDATE,(addr_type)&Cdate[0]}, /* Creation date */ + {ATR$S_REVDATE,ATR$C_REVDATE,(addr_type)&Rdate[0]}, /* Revision date */ + {ATR$S_EXPDATE,ATR$C_EXPDATE,(addr_type)&Edate[0]}, /* Expiration date */ + {ATR$S_BAKDATE,ATR$C_BAKDATE,(addr_type)&Bdate[0]}, /* Backup date */ + {ATR$S_FPRO,ATR$C_FPRO,(addr_type)&prot}, /* file protection */ + {ATR$S_UIC,ATR$C_UIC,(addr_type)&uic}, /* file owner */ + {ATR$S_JOURNAL,ATR$C_JOURNAL,(addr_type)&jnl}, /* journal flags */ {0,0,0} } ; @@ -212,13 +247,13 @@ /* Initialize the FIB */ for (i=0;i<3;i++) -#ifdef VAXC +#ifndef __DECC Fib.fib$r_fid_overlay.fib$w_fid[i]=Nam.nam$w_fid[i]; #else Fib.fib$w_fid[i]=Nam.nam$w_fid[i]; #endif for (i=0;i<3;i++) -#ifdef VAXC +#ifndef __DECC Fib.fib$r_did_overlay.fib$w_did[i]=Nam.nam$w_did[i]; #else Fib.fib$w_did[i]=Nam.nam$w_did[i]; @@ -232,12 +267,20 @@ if (!(status & 1)) { sys$dassgn(DevChan); +#ifdef debug + printf("vmsmunch() returns after IO$_ACCESS with status %u\n", + status); +#endif return(status); } status = iosb[0]; if (!(status & 1)) { sys$dassgn(DevChan); +#ifdef debug + printf("vmsmunch() returns after IO$_ACCESS with status %u\n", + status); +#endif return(status); } @@ -254,8 +297,16 @@ break; case SET_TIMES: - bintim(((struct VMStimbuf *)ptr)->modtime, Cdate); - bintim(((struct VMStimbuf *)ptr)->actime, Rdate); + if (((struct VMStimbuf *)ptr)->modtime != 0) + bintim(((struct VMStimbuf *)ptr)->modtime, Cdate); + if (((struct VMStimbuf *)ptr)->actime != 0) + bintim(((struct VMStimbuf *)ptr)->actime, Rdate); +#ifdef debug + printf("setting Cdate to %s\n", + ((struct VMStimbuf *)ptr)->modtime); + printf("setting Rdate to %s\n", + ((struct VMStimbuf *)ptr)->actime); +#endif break; case GET_RTYPE: /* non-modifying */ @@ -276,6 +327,16 @@ Fat.RTYPE.fat$v_rtype = old_rtype; break; + case SET_EXACT_SIZE: + if (Fat.RTYPE.fat$v_rtype != FAT$C_FIXED) + break; + Fat.fat$r_efblk_overlay.fat$r_efblk_fields.fat$w_efblkh = + ((*(int *)ptr+511) / 512 >> 16) & 0xFFFF; + Fat.fat$r_efblk_overlay.fat$r_efblk_fields.fat$w_efblkl = + ((*(int *)ptr+511) / 512) & 0xFFFF; + Fat.fat$w_ffbyte = *(int *)ptr % 512; + break; + default: return SS$_BADPARAM; /* anything better? */ } @@ -285,19 +346,19 @@ -----------------------------------------------------------------------*/ /* note, part of the FIB was cleared by earlier QIOW, so reset it */ -#ifdef VAXC +#ifndef __DECC Fib.fib$r_acctl_overlay.fib$l_acctl = FIB$M_NORECORD; #else Fib.fib$l_acctl = FIB$M_NORECORD; #endif for (i=0;i<3;i++) -#ifdef VAXC +#ifndef __DECC Fib.fib$r_fid_overlay.fib$w_fid[i]=Nam.nam$w_fid[i]; #else Fib.fib$w_fid[i]=Nam.nam$w_fid[i]; #endif for (i=0;i<3;i++) -#ifdef VAXC +#ifndef __DECC Fib.fib$r_did_overlay.fib$w_did[i]=Nam.nam$w_did[i]; #else Fib.fib$w_did[i]=Nam.nam$w_did[i]; @@ -312,6 +373,10 @@ if (!(status & 1)) { sys$dassgn(DevChan); +#ifdef debug + printf("vmsmunch() returns after IO$_MODIFY with status %u\n", + status); +#endif return(status); } @@ -319,11 +384,22 @@ if (!(status & 1)) { sys$dassgn(DevChan); +#ifdef debug + printf("vmsmunch() returns after IO$_MODIFY with status %u\n", + status); +#endif return(status); } status = sys$dassgn(DevChan); - if (!(status & 1)) return(status); + if (!(status & 1)) + { +#ifdef debug + printf("vmsmunch() returns after sys$dassgn() with status %u\n", + status); +#endif + return(status); + } /* look for next file, if none, no big deal.. */ status = sys$search(&Fab); Index: vms/vmsmunch.h =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/vms/vmsmunch.h,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 vmsmunch.h --- vmsmunch.h 1998/07/20 21:18:07 1.1.1.1 +++ vmsmunch.h 1998/07/29 02:08:09 @@ -16,6 +16,10 @@ 07-Apr-1994 Richard Levitte levitte@e.kth.se Inserted a forward declaration of VMSmunch. + + 08-May-1998 Richard Levitte richard@levitte.org + Inserted definition of SET_EXACT_SIZE. + ---------------------------------------------------------------------------*/ #define GET_TIMES 4 @@ -23,6 +27,7 @@ #define GET_RTYPE 1 #define CHANGE_RTYPE 2 #define RESTORE_RTYPE 3 +#define SET_EXACT_SIZE 5 struct VMStimbuf { /* VMSmunch */ char *actime; /* VMS revision date, ASCII format */ Index: zlib/ChangeLog =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/zlib/ChangeLog,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 ChangeLog --- ChangeLog 1998/07/20 21:15:20 1.1.1.1 +++ ChangeLog 1998/07/29 02:22:33 @@ -1,3 +1,7 @@ +Wed Jul 29 04:22:29 1998 Richard Levitte - VMS Whacker + + * build_zlib.com: There's no need at all to define CC globally. + Tue Mar 18 13:05:37 1997 Jim Meyering * Makefile.in (DISTFILES): Change glob pattern so that it doesn't Index: zlib/build_zlib.com =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/zlib/build_zlib.com,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 build_zlib.com --- build_zlib.com 1998/07/20 21:15:32 1.1.1.1 +++ build_zlib.com 1998/07/29 02:18:38 @@ -1,4 +1,4 @@ -$ CC :== CC/DEBUG/NOOPTIMIZE/STANDARD=VAXC/DEFINE=HAVE_CONFIG_H- +$ CC := CC/DEBUG/NOOPTIMIZE/STANDARD=VAXC/DEFINE=HAVE_CONFIG_H- /INCLUDE_DIRECTORY=([-],[-.LIB],[-.SRC],[-.VMS])/PREFIX_LIBRARY_ENTRIES=ALL_ENTRIES $ CC adler32.c $ CC compress.c -- Richard Levitte \ Spannvägen 38, II \ LeViMS@stacken.kth.se Vice Chairman and \ S-161 43 BROMMA \ T: +46-8-26 52 47 Redakteur @ Stacken \ SWEDEN \ or +46-708-20 09 64 Procurator Odiosus Ex Infernis -- bastard@bofh.se Unsolicited commercial email is subject to an archival fee of $400. See for more info. To: bug-cvs@gnu.org Subject: CVS 1.9.28, another VMS-related bug From: Richard Levitte - VMS Whacker Content-Type: Text/Plain; charset=us-ascii Date: Wed, 29 Jul 1998 15:16:22 +0200 I found another small one. The log says it all. Index: src/ChangeLog =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/src/ChangeLog,v retrieving revision 1.2 diff -u -r1.2 ChangeLog --- ChangeLog 1998/07/29 13:13:48 1.2 +++ ChangeLog 1998/07/29 13:14:43 @@ -1,5 +1,8 @@ Wed Jul 29 04:21:12 1998 Richard Levitte - VMS Whacker + * release.c (release): VMS needs MCR to start a program, + especially since we have a full path to it! + * rcs.c (rcsbuf_getid): Extraneous ; removed. * ignore.c (ignore_files): VMS has no softlinks, so use stat() Index: src/release.c =================================================================== RCS file: /afs/stacken.kth.se/src/SourceRepository/cvs/src/release.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 release.c --- release.c 1998/07/20 21:16:30 1.1.1.1 +++ release.c 1998/07/29 11:20:23 @@ -116,7 +116,12 @@ update_cmd = xmalloc (strlen (program_path) + strlen (CVSroot_original) + 20); - sprintf (update_cmd, "%s -n -q -d %s update", + sprintf (update_cmd, "%s%s -n -q -d %s update", +#ifndef VMS + "", +#else + "mcr ", +#endif program_path, CVSroot_original); #ifdef CLIENT_SUPPORT