Mercurial > hg > xemacs-beta
annotate lib-src/insert-data-in-exec.c @ 4976:16112448d484
Rename xfree(FOO, TYPE) -> xfree(FOO)
-------------------- ChangeLog entries follow: --------------------
src/ChangeLog addition:
2010-02-04 Ben Wing <ben@xemacs.org>
* alloc.c (release_breathing_space):
* alloc.c (resize_string):
* alloc.c (sweep_lcrecords_1):
* alloc.c (SWEEP_FIXED_TYPE_BLOCK_1):
* alloc.c (ADDITIONAL_FREE_compiled_function):
* alloc.c (compact_string_chars):
* alloc.c (ADDITIONAL_FREE_string):
* alloc.c (sweep_strings):
* alloca.c (xemacs_c_alloca):
* alsaplay.c (alsa_play_sound_file):
* buffer.c (init_initial_directory):
* buffer.h:
* buffer.h (BUFFER_FREE):
* console-stream.c (stream_delete_console):
* console-tty.c (free_tty_console_struct):
* data.c (Fnumber_to_string):
* device-gtk.c (gtk_init_device):
* device-gtk.c (free_gtk_device_struct):
* device-gtk.c (gtk_delete_device):
* device-msw.c (mswindows_delete_device):
* device-msw.c (msprinter_delete_device):
* device-tty.c (free_tty_device_struct):
* device-tty.c (tty_delete_device):
* device-x.c (x_init_device):
* device-x.c (free_x_device_struct):
* device-x.c (x_delete_device):
* dialog-msw.c (handle_directory_dialog_box):
* dialog-x.c (dbox_descriptor_to_widget_value):
* dired-msw.c (Fmswindows_insert_directory):
* dired.c (free_user_cache):
* dired.c (user_name_completion_unwind):
* doc.c (unparesseuxify_doc_string):
* doc.c (Fsubstitute_command_keys):
* doprnt.c (emacs_doprnt_1):
* dumper.c (pdump_load_finish):
* dumper.c (pdump_file_free):
* dumper.c (pdump_file_unmap):
* dynarr.c:
* dynarr.c (Dynarr_free):
* editfns.c (uncache_home_directory):
* editfns.c (Fset_time_zone_rule):
* elhash.c:
* elhash.c (pdump_reorganize_hash_table):
* elhash.c (maphash_unwind):
* emacs.c (make_arg_list_1):
* emacs.c (free_argc_argv):
* emacs.c (sort_args):
* emacs.c (Frunning_temacs_p):
* emodules.c (attempt_module_delete):
* eval.c (free_pointer):
* event-Xt.c (unselect_filedesc):
* event-Xt.c (emacs_Xt_select_process):
* event-gtk.c (unselect_filedesc):
* event-gtk.c (dragndrop_data_received):
* event-msw.c (winsock_closer):
* event-msw.c (mswindows_dde_callback):
* event-msw.c (mswindows_wnd_proc):
* event-stream.c (finalize_command_builder):
* event-stream.c (free_command_builder):
* extents.c (free_gap_array):
* extents.c (free_extent_list):
* extents.c (free_soe):
* extents.c (extent_fragment_delete):
* extents.c (extent_priority_sort_function):
* file-coding.c (make_coding_system_1):
* file-coding.c (coding_finalizer):
* file-coding.c (set_coding_stream_coding_system):
* file-coding.c (chain_finalize_coding_stream_1):
* file-coding.c (chain_finalize):
* file-coding.c (free_detection_state):
* file-coding.c (coding_category_symbol_to_id):
* fileio.c:
* fileio.c (Ffile_name_directory):
* fileio.c (if):
* fileio.c (Ffile_symlink_p):
* filelock.c (FREE_LOCK_INFO):
* filelock.c (current_lock_owner):
* font-mgr.c (Ffc_name_unparse):
* font-mgr.c (Ffc_pattern_duplicate):
* frame-gtk.c (gtk_delete_frame):
* frame-msw.c (mswindows_delete_frame):
* frame-msw.c (msprinter_delete_frame):
* frame-x.c (x_cde_destroy_callback):
* frame-x.c (Fcde_start_drag_internal):
* frame-x.c (x_cde_transfer_callback):
* frame-x.c (x_delete_frame):
* frame.c (update_frame_title):
* frame.c (Fset_frame_pointer):
* gc.c (register_for_finalization):
* gccache-gtk.c (free_gc_cache):
* gccache-gtk.c (gc_cache_lookup):
* gccache-x.c (free_gc_cache):
* gccache-x.c (gc_cache_lookup):
* glyphs-eimage.c:
* glyphs-eimage.c (jpeg_instantiate_unwind):
* glyphs-eimage.c (gif_instantiate_unwind):
* glyphs-eimage.c (png_instantiate_unwind):
* glyphs-eimage.c (png_instantiate):
* glyphs-eimage.c (tiff_instantiate_unwind):
* glyphs-gtk.c (convert_EImage_to_GDKImage):
* glyphs-gtk.c (gtk_finalize_image_instance):
* glyphs-gtk.c (gtk_init_image_instance_from_eimage):
* glyphs-gtk.c (gtk_xpm_instantiate):
* glyphs-msw.c (convert_EImage_to_DIBitmap):
* glyphs-msw.c (mswindows_init_image_instance_from_eimage):
* glyphs-msw.c (mswindows_initialize_image_instance_mask):
* glyphs-msw.c (xpm_to_eimage):
* glyphs-msw.c (mswindows_xpm_instantiate):
* glyphs-msw.c (xbm_create_bitmap_from_data):
* glyphs-msw.c (mswindows_finalize_image_instance):
* glyphs-x.c (convert_EImage_to_XImage):
* glyphs-x.c (x_finalize_image_instance):
* glyphs-x.c (x_init_image_instance_from_eimage):
* glyphs-x.c (x_xpm_instantiate):
* gui-x.c (free_popup_widget_value_tree):
* hash.c (free_hash_table):
* hash.c (grow_hash_table):
* hash.c (pregrow_hash_table_if_necessary):
* imgproc.c (build_EImage_quantable):
* insdel.c (uninit_buffer_text):
* intl-win32.c (convert_multibyte_to_internal_malloc):
* intl.c:
* intl.c (Fset_current_locale):
* keymap.c:
* keymap.c (where_is_recursive_mapper):
* keymap.c (where_is_internal):
* lisp.h:
* lisp.h (xfree):
* lstream.c (Lstream_close):
* lstream.c (resizing_buffer_closer):
* mule-coding.c:
* mule-coding.c (iso2022_finalize_detection_state):
* nt.c:
* nt.c (mswindows_get_long_filename):
* nt.c (nt_get_resource):
* nt.c (init_mswindows_environment):
* nt.c (get_cached_volume_information):
* nt.c (mswindows_opendir):
* nt.c (mswindows_closedir):
* nt.c (mswindows_readdir):
* nt.c (mswindows_stat):
* nt.c (mswindows_getdcwd):
* nt.c (Fmswindows_long_file_name):
* ntplay.c (nt_play_sound_file):
* ntplay.c (play_sound_data_1):
* number-gmp.c (gmp_free):
* number-gmp.c (init_number_gmp):
* number-mp.c (bignum_to_string):
* number-mp.c (BIGNUM_TO_TYPE):
* number.c (bignum_print):
* number.c (bignum_convfree):
* number.c (ratio_print):
* number.c (bigfloat_print):
* number.c (bigfloat_finalize):
* objects-gtk.c (gtk_finalize_color_instance):
* objects-gtk.c (gtk_finalize_font_instance):
* objects-msw.c (mswindows_finalize_color_instance):
* objects-msw.c (mswindows_finalize_font_instance):
* objects-tty.c (tty_finalize_color_instance):
* objects-tty.c (tty_finalize_font_instance):
* objects-tty.c (tty_font_list):
* objects-x.c (x_finalize_color_instance):
* objects-x.c (x_finalize_font_instance):
* process.c:
* process.c (finalize_process):
* realpath.c:
* redisplay.c (add_propagation_runes):
* regex.c:
* regex.c (xfree):
* regex.c (REGEX_FREE_STACK):
* regex.c (FREE_STACK_RETURN):
* regex.c (regex_compile):
* regex.c (regexec):
* regex.c (regfree):
* scrollbar-gtk.c (gtk_free_scrollbar_instance):
* scrollbar-gtk.c (gtk_release_scrollbar_instance):
* scrollbar-msw.c (mswindows_free_scrollbar_instance):
* scrollbar-msw.c (unshow_that_mofo):
* scrollbar-x.c (x_free_scrollbar_instance):
* scrollbar-x.c (x_release_scrollbar_instance):
* select-gtk.c (emacs_gtk_selection_handle):
* select-msw.c (mswindows_own_selection):
* select-x.c:
* select-x.c (x_handle_selection_request):
* select-x.c (unexpect_property_change):
* select-x.c (x_handle_property_notify):
* select-x.c (receive_incremental_selection):
* select-x.c (x_get_window_property_as_lisp_data):
* select-x.c (Fx_get_cutbuffer_internal):
* specifier.c (finalize_specifier):
* syntax.c (uninit_buffer_syntax_cache):
* sysdep.c (qxe_allocating_getcwd):
* sysdep.c (qxe_lstat):
* sysdep.c (copy_in_passwd):
* sysdep.c (qxe_ctime):
* sysdep.c (closedir):
* sysdep.c (DIRSIZ):
* termcap.c (tgetent):
* termcap.c (tprint):
* tests.c (Ftest_data_format_conversion):
* text.c (new_dfc_convert_copy_data):
* text.h (eifree):
* text.h (eito_alloca):
* text.h (eito_external):
* toolbar-msw.c (mswindows_output_toolbar):
* ui-gtk.c (CONVERT_RETVAL):
* ui-gtk.c (__allocate_object_storage):
* unicode.c (free_from_unicode_table):
* unicode.c (free_to_unicode_table):
* unicode.c (free_charset_unicode_tables):
* win32.c (mswindows_read_link_1):
Rename: xfree(VAL, TYPE)->xfree(VAL)
Command used:
gr 'xfree *\((.*),.*\);' 'xfree (\1);' *.[ch]
Followed by grepping for 'xfree.*,' and fixing anything left.
Rationale: Having to specify the TYPE argument is annoying and
error-prone. It was originally put in to work around warnings
due to strict aliasing but years and years ago I rewrote it
in a way that doesn't use the TYPE argument at all and no one
has complained since then. (And anyway, XEmacs is far from
ever being in compliance with strict aliasing and would require
far-reaching changes to get that way.)
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Thu, 04 Feb 2010 07:28:14 -0600 |
parents | dfc9fe46c294 |
children | 86d33ddc7fd6 |
rev | line source |
---|---|
4722
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
1 /* Copies the dump file inside the xemacs executable. |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
2 Copyright (C) 2003-2004 Olivier Galibert. |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
3 Copyright (C) 2003 Larry McVoy. |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
4 |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
5 Redistribution and use in source and binary forms, with or without |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
6 modification, are permitted provided that the following conditions are met: |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
7 |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
8 1. Redistributions of source code must retain the above copyright notice, |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
9 this list of conditions and the following disclaimer. |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
10 2. Redistributions in binary form must reproduce the above copyright notice, |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
11 this list of conditions and the following disclaimer in the documentation |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
12 and/or other materials provided with the distribution. |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
13 |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
14 THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
15 INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
16 FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL LARRY |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
17 MCVOY, THE XEMACS PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
18 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
19 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
20 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
21 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
22 OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
23 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
24 |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
25 The views and conclusions contained in the software and documentation are those |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
26 of the authors and should not be interpreted as representing official policies, |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
27 either expressed or implied, of the XEmacs Project. |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
28 |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
29 The "key" array is the work of Larry McVoy. See |
dfc9fe46c294
Add BSD header to lib-src/insert-data-in-exec.c, with permission of Olivier
Jerry James <james@xemacs.org>
parents:
2502
diff
changeset
|
30 http://lkml.org/lkml/2003/7/11/141 for more information. */ |
2015 | 31 |
32 #include <stdio.h> | |
33 #include <stdlib.h> | |
34 #include <string.h> | |
35 | |
36 static const unsigned char key[] = { | |
37 255, | |
38 6, | |
39 1, | |
40 2, | |
41 3, | |
42 4, | |
43 255, | |
44 3, | |
45 9, | |
46 62, | |
47 255, | |
48 10, | |
49 4, | |
50 61, | |
51 255 | |
52 }; | |
53 | |
54 int main(int argc, char **argv) | |
55 { | |
56 FILE *te, *xe, *dump; | |
57 unsigned char *xed, *p; | |
58 long size, size_dump, size1, i; | |
59 long max_size, offset; | |
60 | |
61 char msg[65536]; | |
62 | |
63 if(argc != 6 && (argc != 3 || strcmp(argv[1], "-s"))) { | |
64 fprintf(stderr, "Usage:\n%s temacs xemacs.dmp xemacs size offset\n%s -s xemacs.dmp\n", argv[0], argv[0]); | |
65 exit(1); | |
66 } | |
67 | |
68 if(argc == 3) { | |
69 sprintf(msg, "Opening %s failed", argv[2]); | |
70 dump = fopen(argv[2], "rb+"); | |
71 if(!dump) { | |
72 perror(msg); | |
73 exit(1); | |
74 } | |
75 | |
76 if(fseek(dump, 0, SEEK_END)) { | |
77 perror("fseek end dump"); | |
78 exit(1); | |
79 } | |
80 | |
81 size = ftell(dump); | |
82 if(size == -1) { | |
83 perror("ftell dump"); | |
84 exit(1); | |
85 } | |
86 | |
87 printf("%ld\n", size); | |
88 exit(0); | |
89 } | |
90 | |
91 | |
92 max_size = strtol(argv[4], 0, 10); | |
93 offset = strtol(argv[5], 0, 10); | |
94 | |
95 sprintf(msg, "Opening %s failed", argv[1]); | |
96 te = fopen(argv[1], "rb"); | |
97 if(!te) { | |
98 perror(msg); | |
99 exit(1); | |
100 } | |
101 | |
102 if(fseek(te, 0, SEEK_END)) { | |
103 perror("fseek end"); | |
104 exit(1); | |
105 } | |
106 | |
107 size = ftell(te); | |
108 if(size == -1) { | |
109 perror("ftell"); | |
110 exit(1); | |
111 } | |
112 | |
113 if(fseek(te, 0, SEEK_SET)) { | |
114 perror("fseek beginning"); | |
115 exit(1); | |
116 } | |
117 | |
118 xed = malloc(size); | |
119 if(!xed) { | |
120 perror("malloc"); | |
121 exit(1); | |
122 } | |
123 | |
124 size1 = fread(xed, 1, size, te); | |
125 if(size1 != size) { | |
126 if(ferror(te)) { | |
127 perror("fread temacs"); | |
128 exit(1); | |
129 } | |
130 fprintf(stderr, "Fread returned %ld, expected %ld ?\n", size1, size); | |
131 exit(1); | |
132 } | |
133 | |
134 if(fclose(te)) { | |
135 perror("fclose temacs"); | |
136 exit(1); | |
137 } | |
138 | |
139 p = xed; | |
140 for(i=0; i<size-(long)sizeof(key); i++) { | |
141 if(!memcmp(p, key, sizeof(key))) | |
142 goto found; | |
143 p++; | |
144 } | |
145 | |
146 fprintf(stderr, "dumped_data key not found in executable.\n"); | |
147 exit(1); | |
148 | |
149 found: | |
150 fprintf(stderr, "dumped_data found at offset 0x%lx, patching.\n", i); | |
151 | |
152 sprintf(msg, "Opening %s failed", argv[2]); | |
2502 | 153 dump = fopen(argv[2], "rb"); |
2015 | 154 if(!dump) { |
155 perror(msg); | |
156 exit(1); | |
157 } | |
158 | |
159 if(fseek(dump, 0, SEEK_END)) { | |
160 perror("fseek end dump"); | |
161 exit(1); | |
162 } | |
163 | |
164 size_dump = ftell(dump); | |
165 if(size_dump == -1) { | |
166 perror("ftell dump"); | |
167 exit(1); | |
168 } | |
169 | |
170 if(size_dump > max_size) { | |
2022 | 171 fprintf(stderr, "Dump file too big for available space (max=%ld, dump=%ld)\n", max_size, size_dump); |
2015 | 172 exit(2); |
173 } | |
174 | |
175 if(fseek(dump, 0, SEEK_SET)) { | |
176 perror("fseek beginning dump"); | |
177 exit(1); | |
178 } | |
179 | |
180 size1 = fread(xed+i+offset, 1, size_dump, dump); | |
181 if(size1 != size_dump) { | |
182 if(ferror(dump)) { | |
183 perror("fread dump"); | |
184 exit(1); | |
185 } | |
186 fprintf(stderr, "Fread dump returned %ld, expected %ld ?\n", size1, size_dump); | |
187 exit(1); | |
188 } | |
189 | |
190 if(fclose(dump)) { | |
191 perror("fclose dump"); | |
192 exit(1); | |
193 } | |
194 | |
195 memset(xed+i, 0, offset); | |
196 | |
197 xed[i ] = size_dump; | |
198 xed[i+1] = size_dump >> 8; | |
199 xed[i+2] = size_dump >> 16; | |
200 xed[i+3] = size_dump >> 24; | |
201 | |
202 fprintf(stderr, "dumped_data found at offset 0x%lx, patching.\n", i); | |
203 | |
204 sprintf(msg, "Opening %s failed", argv[3]); | |
205 xe = fopen(argv[3], "wb"); | |
206 if(!xe) { | |
207 perror(msg); | |
208 exit(1); | |
209 } | |
210 | |
211 size1 = fwrite(xed, 1, size, xe); | |
212 if(size1 != size) { | |
213 if(ferror(xe)) { | |
214 perror("fwrite xemacs"); | |
215 exit(1); | |
216 } | |
217 fprintf(stderr, "Fwrite xemacs returned %ld, expected %ld ?\n", size1, size); | |
218 exit(1); | |
219 } | |
220 | |
221 if(fclose(xe)) { | |
222 perror("fclose xemacs"); | |
223 exit(1); | |
224 } | |
225 | |
226 exit(0); | |
227 } | |
228 |