comparison man/internals/internals.texi @ 802:19dfb459d51a

[xemacs-hg @ 2002-04-03 10:47:37 by ben] fix tty problem et al internals/internals.texi: Add section on correctly merging a branch back into the trunk. console-tty.c, eval.c, event-unixoid.c, file-coding.c, file-coding.h, lisp.h, print.c, sysdep.c: Fix data corruption error in print.c from print_depth becoming negative. Borrow primitives internal_bind_int, internal_bind_lisp_object from my stderr-proc ws, soon to be integrated; use them to properly bind print_depth et al. First fix for TTY problem. The basic problem is I switched things so that the TTY I/O is filtered through a coding system, for the support of kterm and such, that speak JIS or similar encodings. (#### I ***swear*** I had this working way back in 19.12.) Anyway, this introduced buffering issues, in which instead of one char being read, it tried to read 1024 chars. I tried setting the stdin descriptor non-blocking, but it doesn't appear to work on Cygwin. (#### Andy, do you know anything about this?) So I fixed it elsewhere. If you get weirdness on the TTY, look in console-tty.c and see how it gets the coding system; maybe there's a way to change it (and if not, there should be!). Also fix warning in sysdep.c.
author ben
date Wed, 03 Apr 2002 10:47:52 +0000
parents 943eaba38521
children 48eed784e93a
comparison
equal deleted inserted replaced
801:2b676dc88c66 802:19dfb459d51a
115 * XEmacs From the Perspective of Building:: 115 * XEmacs From the Perspective of Building::
116 * XEmacs From the Inside:: 116 * XEmacs From the Inside::
117 * The XEmacs Object System (Abstractly Speaking):: 117 * The XEmacs Object System (Abstractly Speaking)::
118 * How Lisp Objects Are Represented in C:: 118 * How Lisp Objects Are Represented in C::
119 * Rules When Writing New C Code:: 119 * Rules When Writing New C Code::
120 * CVS Techniques::
120 * A Summary of the Various XEmacs Modules:: 121 * A Summary of the Various XEmacs Modules::
121 * Allocation of Objects in XEmacs Lisp:: 122 * Allocation of Objects in XEmacs Lisp::
122 * Dumping:: 123 * Dumping::
123 * Events and the Event Loop:: 124 * Events and the Event Loop::
124 * Evaluation; Stack Frames; Bindings:: 125 * Evaluation; Stack Frames; Bindings::
152 153
153 Rules When Writing New C Code 154 Rules When Writing New C Code
154 155
155 * General Coding Rules:: 156 * General Coding Rules::
156 * Writing Lisp Primitives:: 157 * Writing Lisp Primitives::
158 * Writing Good Comments::
157 * Adding Global Lisp Variables:: 159 * Adding Global Lisp Variables::
160 * Proper Use of Unsigned Types::
158 * Coding for Mule:: 161 * Coding for Mule::
159 * Techniques for XEmacs Developers:: 162 * Techniques for XEmacs Developers::
160 163
161 Coding for Mule 164 Coding for Mule
162 165
163 * Character-Related Data Types:: 166 * Character-Related Data Types::
164 * Working With Character and Byte Positions:: 167 * Working With Character and Byte Positions::
165 * Conversion to and from External Data:: 168 * Conversion to and from External Data::
166 * General Guidelines for Writing Mule-Aware Code:: 169 * General Guidelines for Writing Mule-Aware Code::
167 * An Example of Mule-Aware Code:: 170 * An Example of Mule-Aware Code::
171
172 CVS Techniques
173
174 * Merging a Branch into the Trunk::
168 175
169 A Summary of the Various XEmacs Modules 176 A Summary of the Various XEmacs Modules
170 177
171 * Low-Level Modules:: 178 * Low-Level Modules::
172 * Basic Lisp Modules:: 179 * Basic Lisp Modules::
1837 performance is an issue, use @code{type_checking_assert}, 1844 performance is an issue, use @code{type_checking_assert},
1838 @code{bufpos_checking_assert}, and @code{gc_checking_assert}, which do 1845 @code{bufpos_checking_assert}, and @code{gc_checking_assert}, which do
1839 nothing unless the corresponding configure error checking flag was 1846 nothing unless the corresponding configure error checking flag was
1840 specified. 1847 specified.
1841 1848
1842 @node Rules When Writing New C Code, A Summary of the Various XEmacs Modules, How Lisp Objects Are Represented in C, Top 1849 @node Rules When Writing New C Code, CVS Techniques, How Lisp Objects Are Represented in C, Top
1843 @chapter Rules When Writing New C Code 1850 @chapter Rules When Writing New C Code
1844 @cindex writing new C code, rules when 1851 @cindex writing new C code, rules when
1845 @cindex C code, rules when writing new 1852 @cindex C code, rules when writing new
1846 @cindex code, rules when writing new C 1853 @cindex code, rules when writing new C
1847 1854
3094 add a DEFINE_LRECORD_IMPLEMENTATION call to @file{@var{foo}.c} 3101 add a DEFINE_LRECORD_IMPLEMENTATION call to @file{@var{foo}.c}
3095 @item 3102 @item
3096 add an INIT_LRECORD_IMPLEMENTATION call to @code{syms_of_@var{foo}.c} 3103 add an INIT_LRECORD_IMPLEMENTATION call to @code{syms_of_@var{foo}.c}
3097 @end enumerate 3104 @end enumerate
3098 3105
3099 @node A Summary of the Various XEmacs Modules, Allocation of Objects in XEmacs Lisp, Rules When Writing New C Code, Top 3106 @node CVS Techniques, A Summary of the Various XEmacs Modules, Rules When Writing New C Code, Top
3107 @chapter CVS Techniques
3108 @cindex CVS techniques
3109
3110 @menu
3111 * Merging a Branch into the Trunk::
3112 @end menu
3113
3114 @node Merging a Branch into the Trunk
3115 @section Merging a Branch into the Trunk
3116 @cindex merging a branch into the trunk
3117
3118 @enumerate
3119 @item
3120 If you haven't already done a merge, you will be merging from the branch
3121 point; otherwise you'll be merging from the last merge point, which
3122 should be marked by a tag, e.g. @samp{last-sync-ben-mule-21-5}. In the
3123 former case, create the last-sync tag, e.g.
3124
3125 @example
3126 crw rtag -r ben-mule-21-5-bp last-sync-ben-mule-21-5 xemacs
3127 @end example
3128
3129 (You did create a branch point tag when you created the branch, didn't
3130 you?)
3131
3132 @item
3133 Check everything in on your branch.
3134
3135 @item
3136 Tag your branch with a pre-sync tag, e.g.
3137
3138 @example
3139 crw rtag -r ben-mule-21-5 ben-mule-21-5-pre-feb-20-2002-sync xemacs
3140 @end example
3141
3142 Note, you need to use rtag and specify a version with @samp{-r} (use
3143 @samp{-r HEAD} if necessary) so that removed files are handled correctly
3144 in some obscure cases. See section 4.8 of the CVS manual.
3145
3146 @item
3147 Tag the trunk so you have a stable place to merge up to in case people
3148 are asynchronously committing to the trunk, e.g.
3149
3150 @example
3151 crw rtag -r HEAD main-branch-ben-mule-21-5-syncpoint-feb-20-2002 xemacs
3152 crw rtag -F -r main-branch-ben-mule-21-5-syncpoint-feb-20-2002 next-sync-ben-mule-21-5 xemacs
3153 @end example
3154
3155 Use -F in the second case because the name might already exist, e.g. if
3156 you've already done a merge. We make two tags because one is a
3157 permanent mark indicating a syncpoint when merging, and the other is a
3158 symbolic tag to make other operations easier.
3159
3160 @item
3161 Make a backup of your source tree (not totally necessary but useful for
3162 reference and peace of mind): Move one level up from the top directory
3163 of your branch and do, e.g.
3164
3165 @example
3166 cp -a mule mule-backup-2-23-02
3167 @end example
3168
3169 @item
3170 Now, we're ready to merge! Make sure you're in the top directory of
3171 your branch and do, e.g.
3172
3173 @example
3174 cvs update -j last-sync-ben-mule-21-5 -j next-sync-ben-mule-21-5
3175 @end example
3176
3177 @item
3178 Fix all merge conflicts. Get the sucker to compile and run.
3179
3180 @item
3181 Tag your branch with a post-sync tag, e.g.
3182
3183 @example
3184 crw rtag -r ben-mule-21-5 ben-mule-21-5-post-feb-20-2002-sync xemacs
3185 @end example
3186
3187 @item
3188 Update the last-sync tag, e.g.
3189
3190 @example
3191 crw rtag -F -r next-sync-ben-mule-21-5 last-sync-ben-mule-21-5 xemacs
3192 @end example
3193 @end enumerate
3194
3195
3196 @node A Summary of the Various XEmacs Modules, Allocation of Objects in XEmacs Lisp, CVS Techniques, Top
3100 @chapter A Summary of the Various XEmacs Modules 3197 @chapter A Summary of the Various XEmacs Modules
3101 @cindex modules, a summary of the various XEmacs 3198 @cindex modules, a summary of the various XEmacs
3102 3199
3103 This is accurate as of XEmacs 20.0. 3200 This is accurate as of XEmacs 20.0.
3104 3201