Diff

Differences From Artifact [03d356e3a6]:

To Artifact [d4ffca3dc2]:


1
2
3
4



5
6
7


8
9
10
11
12

13
14
15


16


17
18
19
20
21
22
23
24
25
26
27



28






29

30


31

32
33


34


35
36
37
38
39
40
41
42




43



























44
45
/^# [0-9][0-9]* /{
	file = $3;

	gsub(/^"/, "", file);



	gsub(/"$/, "", file);

	while(sub(/\/\/*[^\/]*\/\.\.\/\/*/, "/", file)) {}



	destfile = file;
	if (!gsub(/^.*\/gcc\/.*\/include\//, "gcc/", destfile)) {
		if (!gsub(/^.*\/include\//, "", destfile)) {
			if (!gsub(/^.*\/include-fixed\//, "", destfile)) {

				next;
			}
		}


	}



	if (file ~ /</) {
		next;
	}

	if (file !~ /\.h$/) {
		next;
	}

	count = 0;
	origdestfile = destfile;



	while (destfiles[destfile]) {






		if (destfiles[destfile] == file) {

			break;


		}


		destfile = count "/" origdestfile;


		count++;


	}

	destfiles[destfile] = file;
	copy[file] = destfile;
}

END{
	for (key in copy) {




		print key, copy[key];



























	}
}
|
|
|
|
>
>
>
|

<
>
>
|
|
<
|
<
>
|
|
|
>
>
|
>
>









<
|
>
>
>
|
>
>
>
>
>
>
|
>
|
>
>
|
>

|
>
>
|
>
>
|
|
|
|




>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>


1
2
3
4
5
6
7
8
9

10
11
12
13

14

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/^End of search list/{
	in_searchpath = 0;
}

(in_searchpath == 1){
	searchpath = $0;
	sub(/^  */, "", searchpath);
	sub(/  *$/, "", searchpath);


	searchpaths[searchidx] = searchpath "/";
	searchidx++;
}


/#include <\.\.\.> search starts here:/{

	in_searchpath = 1;
	searchidx = 0;
}

/^# [0-9][0-9]* /{
	file = $3;

	sub(/^"/, "", file);
	sub(/"$/, "", file);

	if (file ~ /</) {
		next;
	}

	if (file !~ /\.h$/) {
		next;
	}


	destfile = file;
	longestmatchlen = -1;
	for (idx = 0; idx < searchidx; idx++) {
		len = length(searchpaths[idx]);
		if (substr(destfile, 1, len) == searchpaths[idx]) {
			if (len > longestmatchlen) {
				longestmatchidx = idx;
				longestmatchlen = len;
			}
		}
	}

	while(sub(/\/\/*[^\/]*\/\.\.\/\/*/, "/", file)) {}

	if (longestmatchlen > 0) {
		idx = longestmatchidx;

		destfile = substr(destfile, longestmatchlen + 1);

		while(sub(/\/\/*[^\/]*\/\.\.\/\/*/, "/", destfile)) {}
	} else {
		while(sub(/\/\/*[^\/]*\/\.\.\/\/*/, "/", destfile)) {}

		if (!sub(/^.*\/include\//, "", destfile)) {
			next;
		}
	}

	copy[file,idx] = destfile;
}

END{
	for (key in copy) {
		split(key, parts, SUBSEP);

		src = parts[1];
		idx = strtonum(parts[2]);
		dest = copy[key];

		destcopy[dest,idx] = src;
		destcopyfiles[dest] = 1;
	}

	for (destfile in destcopyfiles) {
		outidx = 0;
		for (idx = 0; idx < searchidx; idx++) {
			if (destcopy[destfile,idx]) {
				srcfile = destcopy[destfile,idx];
				newcopy[srcfile,outidx] = destfile;
				outidx++;
			}
		}

	}

	for (key in newcopy) {
		split(key, parts, SUBSEP);

		if (parts[2] == "0") {
			parts[2] = "";
		} else {
			parts[2] = parts[2] "/";
		}

		print parts[1], parts[2]  newcopy[key];
	}
}