This patch will convert version 2.45 of the ups distribution to version 2.45.2. You'll need Larry Wall's patch program to apply it (but you've probably got that anyway). Here's how to apply the patch: 1) Change directory to the top level of the ups distribution. This will originally have been created as ups-2.45 - it doesn't matter if you've moved it since. 2) Say `patch -p1 < .../ups-2.45-to-2.45.2.patch' (where `...' is the path to where this file is). You may want to redirect the (voluminous) output and error output of patch into a file for later perusal. Note that you don't have to strip this message or any headers off the front of this message - patch will ignore any leading text that it doesn't understand. If patch says: This file doesn't appear to be the 2.45 version--patch anyway? [n] then you probably don't have version 2.45 of ups in your existing distribution tree (perhaps this patch has already been applied). In any case you almost certainly don't want to continue with the patch. 3) Check the patch output - it should consist only of successful patches. A successful patch looks something like: Hmm... The next patch looks like a new-style context diff to me... The text leading up to this was: -------------------------- |*** ups-2.45/ups/va_edit.c Mon Apr 8 14:19:56 1991 |--- ups-2.45.2/ups/va_edit.c Fri May 3 22:49:00 1991 -------------------------- Patching file ups/va_edit.c using Plan A... Hunk #1 succeeded at 7. Hunk #2 succeeded at 31. If you see failure messages you'll have to fix things up by hand (see the patch manual page). This shouldn't happen unless you have made local changes to the ups distribution. 4) If you kept ups under the original name of ups-2.45 then move that directory to ups-2.45.2. 5) Delete the .orig files that patch creates. 6) Recompile and reinstall ups as described in the top level README file. Mark Russell (mtr@ukc.ac.uk) Tue 9th Feb 1993 --- The patch starts here --- Prereq: 2.45 *** ups-2.45/ups/sccsdata.c Sat Sep 19 14:46:28 1992 --- ups-2.45.2/ups/sccsdata.c Tue Feb 9 21:16:00 1993 *************** *** 1,6 **** /* sccsdata.c - sccs data file for ups generated by mksccs */ ! char ups_sccsdata_c_sccsid[] = "@(#)sccsdata.c 2.45 19/9/92"; #include "sccsdata.h" --- 1,6 ---- /* sccsdata.c - sccs data file for ups generated by mksccs */ ! char ups_sccsdata_c_sccsid[] = "@(#)sccsdata.c 2.45.1.2 9/2/93"; #include "sccsdata.h" *************** *** 10,23 **** /* Changes since the last version: * ! * Fix use-after-free bug that caused all source editing to fail - grrr. ! * ! * Link against ukcprog version that returns storage aligned for doubles. */ const char *_ups_sccsdata[] = { ! "ups version 2.45 (build date: Sat Sep 19 14:45:26 BST 1992)", ! "@{$ups$}: sccsdata.c 2.45 ", "@{$ups$}: as.h 1.4 ", "@{$ups$}: breakpoint.h 1.4 ", "@{$ups$}: ci.h 1.14 ", --- 10,22 ---- /* Changes since the last version: * ! * st_parse.c: Add additional workaround for gcc 2.3.3 symbol ! * table problem. */ const char *_ups_sccsdata[] = { ! "ups version 2.45.2 (build date: Tue Feb 9 20:46:25 GMT 1993)", ! "@{$ups$}: sccsdata.c 2.45.1.2 ", "@{$ups$}: as.h 1.4 ", "@{$ups$}: breakpoint.h 1.4 ", "@{$ups$}: ci.h 1.14 ", *************** *** 83,89 **** "@{$ups$}: st_stab.c 1.31 ", "@{$ups$}: st_shlib.c 1.18 ", "@{$ups$}: st_fmap.c 1.17 ", ! "@{$ups$}: st_parse.c 1.32 ", "@{$ups$}: st_read.c 1.25 ", "@{$ups$}: st_skim.c 1.39 ", "@{$ups$}: st_cb.c 1.19 ", --- 82,88 ---- "@{$ups$}: st_stab.c 1.31 ", "@{$ups$}: st_shlib.c 1.18 ", "@{$ups$}: st_fmap.c 1.17 ", ! "@{$ups$}: st_parse.c 1.32.1.2 ", "@{$ups$}: st_read.c 1.25 ", "@{$ups$}: st_skim.c 1.39 ", "@{$ups$}: st_cb.c 1.19 ", *** ups-2.45/ups/st_parse.c Tue Sep 15 18:55:57 1992 --- ups-2.45.2/ups/st_parse.c Tue Feb 9 20:47:58 1993 *************** *** 7,13 **** * unaltered copy of this message (including the copyright). */ ! char ups_st_parse_c_sccsid[] = "@(#)st_parse.c 1.32 15/9/92 (UKC)"; #include --- 7,13 ---- * unaltered copy of this message (including the copyright). */ ! char ups_st_parse_c_sccsid[] = "@(#)st_parse.c 1.32.1.2 9/2/93 (UKC)"; #include *************** *** 292,299 **** int len; s = *p_s; ! if (!isalpha(*s) && *s != '_' && *s != '$') panic("bad name in parse_name"); while (isalnum(*s) || *s == '_' || *s == '$') s++; if (alloc_id != 0) { --- 292,310 ---- int len; s = *p_s; ! ! /* The test for ':' is needed because gcc 2.3.1 puts out symbol ! * table entries containing empty names (i.e. nothing before the ! * ':') for unnamed enums. ! * ! * Gcc 2.3.3 also seems to put out spaces in names. Skip those ! * as well. Thanks to Martin Davy for this patch. ! */ ! while (isspace(*s)) ! ++s; ! if (*s != ':' && !isalpha(*s) && *s != '_' && *s != '$') panic("bad name in parse_name"); + while (isalnum(*s) || *s == '_' || *s == '$') s++; if (alloc_id != 0) {