Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sdd.hp.com!usc!ucsd!ucbvax!duc220.uni-duisburg.de!hj412fr From: hj412fr@duc220.uni-duisburg.de (Martin Anantharaman) Newsgroups: comp.sys.apollo Subject: Re: GNU Make on Apollo sr10.2/bsd4.3; lib(file.o) problem? Message-ID: <9011190859.AA05857@duc220.uni-duisburg.de> Date: 19 Nov 90 08:59:15 GMT Sender: daemon@ucbvax.BERKELEY.EDU Organization: The Internet Lines: 49 I enclose a message I saved some time ago (my apologies to the original sender for having deleted all addresses!): Hello! I've had gnu make-3.58 running on my Apollo for a day now, and it's really nice. However, GNU make and Apollo archive files have two incompatibilities. The first problem is that Apollos put a '/' character in the names of archived files even if you're in the Apollo BSD4.3 environment (as I am). This can be fixed by adding something to check for an Apollo on line 160 of arscan.c. The other problem may be a general problem for all machines with 'USG' defined (does this mean sys5? I'm not sure). The routine 'ar_name_equal' in arscan.c assumes the length of the archived filename to be 15 characters plus a null; this is not true with USG true. As the filename is terminated with a '/' and a space (at least on the Apollo), only 14 characters are stored. On the Apollo these 14 characters are just the start of the filename (the full filename is stored elsewhere), so an object file need not end with '.o' as GNU assumes. The changed version of ar_name_equal in arscan.c thus becomes: /* Return nonzero iff NAME matches MEM. If NAME is longer than sizeof (struct ar_hdr.ar_name), MEM may be the truncated version. */ int ar_name_equal (name, mem) char *name, *mem; { return (!strncmp (name, mem, 14)); } Goodbye! Hope that helps! Martin Anantharaman FB7, FG7 (Mechanik) Work: +49 (203) 379-3336 Universitaet -GH- Duisburg Home: +49 (203) 37 65 89 Lotharstr. 1 FAX: +49 (203) 379-3052 4100 Duisburg 1 E-Mail: hj412fr@duc220.uni-duisburg.de West Germany