annotate netinstall/ini.h @ 5124:623d57b7fbe8 ben-lisp-object

separate regular and disksave finalization, print method fixes. Create separate disksave method and make the finalize method only be for actual object finalization, not disksave finalization. Fix places where 0 was given in place of a printer -- print methods are mandatory, and internal objects formerly without a print method now must explicitly specify internal_object_printer(). Change the defn of CONSOLE_LIVE_P to avoid problems in some weird situations. -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-01-20 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (very_old_free_lcrecord): * alloc.c (disksave_object_finalization_1): * alloc.c (make_lcrecord_list): * alloc.c (alloc_managed_lcrecord): * alloc.c (free_managed_lcrecord): * alloc.c (sweep_lcrecords_1): * buffer.c: * bytecode.c: * bytecode.c (Fcompiled_function_p): * chartab.c: * console-impl.h: * console-impl.h (CONSOLE_TYPE_P): * console.c: * console.c (set_quit_events): * data.c: * data.c (Fmake_ephemeron): * database.c: * database.c (finalize_database): * database.c (Fclose_database): * device-msw.c: * device-msw.c (finalize_devmode): * device-msw.c (allocate_devmode): * device.c: * elhash.c: * elhash.c (finalize_hash_table): * eval.c: * eval.c (bind_multiple_value_limits): * event-stream.c: * event-stream.c (finalize_command_builder): * events.c: * events.c (mark_event): * extents.c: * extents.c (finalize_extent_info): * extents.c (uninit_buffer_extents): * faces.c: * file-coding.c: * file-coding.c (finalize_coding_system): * file-coding.h: * file-coding.h (struct coding_system_methods): * file-coding.h (struct detector): * floatfns.c: * floatfns.c (extract_float): * fns.c: * fns.c (Fidentity): * font-mgr.c (finalize_fc_pattern): * font-mgr.c (finalize_fc_config): * frame.c: * glyphs.c: * glyphs.c (finalize_image_instance): * glyphs.c (unmap_subwindow_instance_cache_mapper): * gui.c: * gui.c (gui_error): * keymap.c: * lisp.h (struct Lisp_Symbol): * lrecord.h: * lrecord.h (struct lrecord_implementation): * lrecord.h (MC_ALLOC_CALL_FINALIZER): * lrecord.h (MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE): * lrecord.h (DEFINE_DUMPABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (MAKE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_SIZABLE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_SIZABLE_GENERAL_LISP_OBJECT): * lrecord.h (MAKE_MODULE_LISP_OBJECT): * lstream.c: * lstream.c (finalize_lstream): * lstream.c (disksave_lstream): * marker.c: * marker.c (finalize_marker): * mule-charset.c (make_charset): * number.c: * objects.c: * objects.c (finalize_color_instance): * objects.c (finalize_font_instance): * opaque.c: * opaque.c (make_opaque_ptr): * process-nt.c: * process-nt.c (nt_finalize_process_data): * process-nt.c (nt_deactivate_process): * process.c: * process.c (finalize_process): * procimpl.h (struct process_methods): * scrollbar.c: * scrollbar.c (free_scrollbar_instance): * specifier.c (finalize_specifier): * symbols.c: * toolbar.c: * toolbar.c (Ftoolbar_button_p): * tooltalk.c: * ui-gtk.c: * ui-gtk.c (emacs_gtk_object_finalizer): * ui-gtk.c (allocate_emacs_gtk_boxed_data): * window.c: * window.c (finalize_window): * window.c (mark_window_as_deleted): Separate out regular and disksave finalization. Instead of a FOR_DISKSAVE argument to the finalizer, create a separate object method `disksaver'. Make `finalizer' have only one argument. Go through and separate out all finalize methods into finalize and disksave. Delete lots of thereby redundant disksave checking. Delete places that signal an error if we attempt to disksave -- all of these objects are non-dumpable and we will get an error from pdump anyway if we attempt to dump them. After this is done, only one object remains that has a disksave method -- lstream. Change DEFINE_*_LISP_OBJECT_WITH_PROPS to DEFINE_*_GENERAL_LISP_OBJECT, which is used for specifying either property methods or disksave methods (or in the future, any other less-used methods). Remove the for_disksave argument to finalize_process_data. Don't provide a disksaver for processes because no one currently needs it. Clean up various places where objects didn't provide a print method. It was made mandatory in previous changes, and all methods now either provide their own print method or use internal_object_printer or external_object_printer. Change the definition of CONSOLE_LIVE_P to use the contype enum rather than looking into the conmeths structure -- in some weird situations with dead objects, the conmeths structure is NULL, and printing such objects from debug_print() will crash if we try to look into the conmeths structure.
author Ben Wing <ben@xemacs.org>
date Wed, 20 Jan 2010 07:05:57 -0600
parents ce0b3f2eff35
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
448
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
1 /*
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
2 * Copyright (c) 2000, Red Hat, Inc.
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
3 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
4 * This program is free software; you can redistribute it and/or modify
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
7 * (at your option) any later version.
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
8 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
9 * A copy of the GNU General Public License can be found at
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
10 * http://www.gnu.org/
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
11 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
12 * Written by DJ Delorie <dj@cygnus.com>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
13 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
14 */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
15
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
16 /* When setup.ini is parsed, the information is stored according to
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
17 the declarations here. ini.cc (via inilex and iniparse)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
18 initializes these structures. choose.cc sets the action and trust
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
19 fields. download.cc downloads any needed files for selected
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
20 packages (the chosen "install" field). install.cc installs
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
21 selected packages. */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
22
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
23 #define YYSTYPE char *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
24
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
25 /* lowest number must be most trusted, highest least trusted */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
26 #define TRUST_PREV 0
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
27 #define TRUST_CURR 1
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
28 #define TRUST_TEST 2
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
29 #define NTRUST 3
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
30 #define TRUST_UNKNOWN 3 /* intentionally not in NTRUST */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
31
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
32 #define TY_GENERIC 0
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
33 #define TY_CYGWIN 1
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
34 #define TY_NATIVE 2
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
35
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
36 #define ACTION_UNKNOWN 0
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
37 #define ACTION_SAME 1
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
38 #define ACTION_NEW 2
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
39 #define ACTION_UPGRADE 3
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
40 #define ACTION_UNINSTALL 4
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
41 #define ACTION_ERROR 5
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
42
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
43 #define SRCACTION_NO 0
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
44 #define SRCACTION_YES 1
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
45
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
46 typedef struct {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
47 char *name; /* package name, like "cygwin" */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
48 char *sdesc; /* short description (replaces "name" if provided) */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
49 char *ldesc; /* long description (multi-line) */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
50 int action; /* ACTION_* - only NEW and UPGRADE get installed */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
51 int srcaction;/* SRCACTION_ */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
52 int trust; /* TRUST_* (selects among info[] below) */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
53 int type; /* TY_GENERIC, TY_CYGWIN or TY_NATIVE. */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
54
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
55 struct {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
56 char *version; /* version part of filename */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
57 char *install; /* file name to install */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
58 int install_size; /* in bytes */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
59 char *source; /* sources for installed binaries */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
60 int source_size; /* in bytes */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
61 } info[NTRUST+1]; /* +1 for TRUST_UNKNOWN */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
62 } Package;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
63
454
d7a9135ec789 Import from CVS: tag r21-2-42
cvs
parents: 448
diff changeset
64 #ifdef __cplusplus
d7a9135ec789 Import from CVS: tag r21-2-42
cvs
parents: 448
diff changeset
65 extern "C" {
d7a9135ec789 Import from CVS: tag r21-2-42
cvs
parents: 448
diff changeset
66 #endif
d7a9135ec789 Import from CVS: tag r21-2-42
cvs
parents: 448
diff changeset
67
448
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
68 extern Package *package;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
69 extern Package *xemacs_package;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
70
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
71 extern int npackages;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
72
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
73 Package *new_package (char *name);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
74 void ini_init (char *string);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
75
657
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 454
diff changeset
76 #define pinfo(p) ((p).info[(p).trust])
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 454
diff changeset
77 #define pi pinfo(package[i])
448
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
78
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
79 #define LOOP_PACKAGES \
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
80 for (i=0; i<npackages; i++) \
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
81 if ((package[i].action == ACTION_NEW \
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
82 || package[i].action == ACTION_UPGRADE) \
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
83 && pi.install)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
84
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
85 #ifdef __cplusplus
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
86 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
87 #endif