author | Mike Sullivan <Mike.Sullivan@Oracle.COM> |
Mon, 11 Mar 2013 10:38:09 -0700 | |
branch | s11-update |
changeset 2520 | ceec631e74d1 |
parent 2517 | d7a835a71137 |
permissions | -rw-r--r-- |
2517
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
1 |
This patch is taken from: |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
2 |
http://cvs.savannah.gnu.org/viewvc/make/read.c?root=make&r1=1.193&r2=1.194 |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
3 |
|
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
4 |
Fix various errors parsing archives with multiple objects in the parenthesis, |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
5 |
as well as wildcards. Fixes Savannah bug #30612. |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
6 |
|
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
7 |
https://savannah.gnu.org/bugs/?30612 |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
8 |
|
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
9 |
Second patch is a followup for that bug as well: |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
10 |
http://cvs.savannah.gnu.org/viewvc/make/read.c?root=make&r1=1.200&r2=1.201 |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
11 |
|
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
12 |
--- a/read.c 2010/07/13 01:20:42 1.193 |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
13 |
+++ b/read.c 2010/08/14 02:50:14 1.194 |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
14 |
@@ -3028,7 +3028,7 @@ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
15 |
{ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
16 |
/* This looks like the first element in an open archive group. |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
17 |
A valid group MUST have ')' as the last character. */ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
18 |
- const char *e = p + nlen; |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
19 |
+ const char *e = p; |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
20 |
do |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
21 |
{ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
22 |
e = next_token (e); |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
23 |
@@ -3084,19 +3084,19 @@ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
24 |
Go to the next item in the string. */ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
25 |
if (flags & PARSEFS_NOGLOB) |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
26 |
{ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
27 |
- NEWELT (concat (2, prefix, tp)); |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
28 |
+ NEWELT (concat (2, prefix, tmpbuf)); |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
29 |
continue; |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
30 |
} |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
31 |
|
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
32 |
/* If we get here we know we're doing glob expansion. |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
33 |
TP is a string in tmpbuf. NLEN is no longer used. |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
34 |
We may need to do more work: after this NAME will be set. */ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
35 |
- name = tp; |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
36 |
+ name = tmpbuf; |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
37 |
|
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
38 |
/* Expand tilde if applicable. */ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
39 |
- if (tp[0] == '~') |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
40 |
+ if (tmpbuf[0] == '~') |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
41 |
{ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
42 |
- tildep = tilde_expand (tp); |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
43 |
+ tildep = tilde_expand (tmpbuf); |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
44 |
if (tildep != 0) |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
45 |
name = tildep; |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
46 |
} |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
47 |
@@ -3152,7 +3152,10 @@ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
48 |
else |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
49 |
{ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
50 |
/* We got a chain of items. Attach them. */ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
51 |
- (*newp)->next = found; |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
52 |
+ if (*newp) |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
53 |
+ (*newp)->next = found; |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
54 |
+ else |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
55 |
+ *newp = found; |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
56 |
|
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
57 |
/* Find and set the new end. Massage names if necessary. */ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
58 |
while (1) |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
59 |
|
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
60 |
--- a/read.c 2011/05/07 14:36:12 1.200 |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
61 |
+++ b/read.c 2011/06/12 16:22:04 1.201 |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
62 |
@@ -3044,16 +3044,16 @@ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
63 |
nlen -= (n + 1) - tp; |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
64 |
tp = n + 1; |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
65 |
|
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
66 |
- /* If we have just "lib(", part of something like |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
67 |
- "lib( a b)", go to the next item. */ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
68 |
- if (! nlen) |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
69 |
- continue; |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
70 |
- |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
71 |
/* We can stop looking now. */ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
72 |
break; |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
73 |
} |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
74 |
} |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
75 |
while (*e != '\0'); |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
76 |
+ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
77 |
+ /* If we have just "lib(", part of something like "lib( a b)", |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
78 |
+ go to the next item. */ |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
79 |
+ if (! nlen) |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
80 |
+ continue; |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
81 |
} |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
82 |
} |
d7a835a71137
15856019 Archive library support broken in gmake 3.82
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
83 |