xref: /PHP-8.4/ext/phar/gdbhelp (revision 1ad08256)
1define ___pharglobals
2	if basic_functions_module.zts
3		set $tsrm_ls = ts_resource_ex(0, 0)
4		set $pharglobals = ((zend_phar_globals) (*((void ***) $tsrm_ls))[phar_globals_id-1])
5	else
6		set $pharglobals = phar_globals
7	end
8end
9
10define ____print_pharht
11	set $ht = $arg0
12	set $p = $ht.pListHead
13
14	while $p != 0
15		set $i = $ind
16		while $i > 0
17			printf "  "
18			set $i = $i - 1
19		end
20
21		set $temp = *(phar_archive_data*)$p->pDataPtr
22		____print_str $temp.fname $temp.fname_len
23		printf " => "
24
25		if $arg1 == 0
26
27			printf "%i (alias ", $temp.refcount
28			____print_str $temp.alias $temp.alias_len
29			printf ")\n"
30		end
31
32		set $p = $p->pListNext
33	end
34end
35
36define print_phar
37	set $ind = 1
38	___pharglobals
39	printf "{"
40	____print_pharht $pharglobals.phar_fname_map 0
41	printf "}\n"
42end
43
44document display_phar_globals
45	display phar globals
46end
47
48define display_phar_globals
49	___pharglobals
50	graph display $phar_globals.$arg0
51end
52
53define print_pharfp
54	___pharglobals
55	set $ht = $pharglobals.phar_fname_map
56	set $p = $ht.pListHead
57	set $fpcount = 0
58
59	while $p != 0
60		set $pharname = (*(phar_archive_data*)$p->pDataPtr).fname
61		set $pharrefcount = (*(phar_archive_data*)$p->pDataPtr).refcount
62		if (*(phar_archive_data*)$p->pDataPtr).fp != 0
63			set $fpcount = $fpcount + 1
64			printf "phar %s is open (%i)\n", $pharname, $pharrefcount
65		end
66		set $manifest = (*(phar_archive_data*)$p->pDataPtr).manifest
67		set $m = $manifest.pListHead
68		while $m != 0
69			if (*(phar_entry_info *)$m->pData).fp
70				set $fpcount = $fpcount + 1
71				set $a = (*(phar_entry_info *)$m->pData).fp_refcount
72				printf "phar %s file %s is open (%i)\n", $pharname, (*(phar_entry_info *)$m->pData).filename, $a
73			end
74			set $m = $m->pListNext
75		end
76
77		set $p = $p->pListNext
78	end
79	printf "Open file pointers: %d\n", $fpcount
80end
81
82document print_pharfp
83	displays all open file pointers in phar, and the phars plus entries that are open with reference counts
84end
85
86define dump_entry
87	___pharglobals
88	set $ht = $pharglobals.phar_fname_map
89	set $p = $ht.pListHead
90	set $done = 0
91	while $p != 0
92		set $t = (*(phar_archive_data*)$p->pDataPtr)
93		if $t.fname[0] == $arg0[0] || $t.alias[0] == $arg0[0]
94			set $manifest = (*(phar_archive_data*)$p->pDataPtr).manifest
95			set $m = $manifest.pListHead
96			while $m != 0
97				if (*(phar_entry_info *)$m->pData).filename[0] == $arg1[0]
98					if $argc == 3
99						output *((phar_entry_info *)$m->pData)->fp
100					end
101					if $argc == 2
102						output *(phar_entry_info *)$m->pData
103					end
104					printf "\n"
105					set $done = 1
106					loop_break
107				end
108				set $m = $m->pListNext
109			end
110		end
111		if $done == 1
112			loop_break
113		end
114		set $p = $p->pListNext
115	end
116end
117
118document dump_entry
119	dump_entry "pharname"|"pharalias" "filename" [1]
120	display phar_entry_info for a file within a phar.  If the optional third param
121	is passed in, displays the php_stream that is the file's fp
122end
123