~ubuntu-branches/debian/lenny/fpc/lenny

« back to all changes in this revision

Viewing changes to fpcsrc/rtl/unix/terminfo.pp

  • Committer: Bazaar Package Importer
  • Author(s): Mazen Neifer, Torsten Werner, Mazen Neifer
  • Date: 2008-05-17 17:12:11 UTC
  • mfrom: (3.1.9 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080517171211-9qi33xhd9evfa0kg
Tags: 2.2.0-dfsg1-9
[ Torsten Werner ]
* Add Mazen Neifer to Uploaders field.

[ Mazen Neifer ]
* Moved FPC sources into a version dependent directory from /usr/share/fpcsrc
  to /usr/share/fpcsrc/${FPCVERSION}. This allow installing more than on FPC
  release.
* Fixed far call issue in compiler preventing building huge binearies.
  (closes: #477743)
* Updated building dependencies, recomennded and suggested packages.
* Moved fppkg to fp-utils as it is just a helper tool and is not required by
  compiler.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
{
 
2
    This file is part of the Free Pascal run time library.
 
3
    Copyright (c) 1999-2000 by Florian Klaempfl
 
4
    member of the Free Pascal development team
 
5
 
 
6
    TermInfo interface unit for linux
 
7
 
 
8
    See the file COPYING.FPC, included in this distribution,
 
9
    for details about the copyright.
 
10
 
 
11
    This program is distributed in the hope that it will be useful,
 
12
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
14
 
 
15
 **********************************************************************}
 
16
unit TermInfo;
 
17
 
 
18
interface
 
19
 
 
20
{$linklib ncurses}
 
21
{$linklib c}
 
22
{$packrecords c}
 
23
 
 
24
const curseslib = 'ncurses';
 
25
 
 
26
const
 
27
  { boolean values }
 
28
  auto_left_margin              = 0;
 
29
  auto_right_margin             = 1;
 
30
  no_esc_ctlc                   = 2;
 
31
  ceol_standout_glitch          = 3;
 
32
  eat_newline_glitch            = 4;
 
33
  erase_overstrike              = 5;
 
34
  generic_type                  = 6;
 
35
  hard_copy                     = 7;
 
36
  has_meta_key                  = 8;
 
37
  has_status_line               = 9;
 
38
  insert_null_glitch            = 10;
 
39
  memory_above                  = 11;
 
40
  memory_below                  = 12;
 
41
  move_insert_mode              = 13;
 
42
  move_standout_mode            = 14;
 
43
  over_strike                   = 15;
 
44
  status_line_esc_ok            = 16;
 
45
  dest_tabs_magic_smso          = 17;
 
46
  tilde_glitch                  = 18;
 
47
  transparent_underline         = 19;
 
48
  xon_xoff                      = 20;
 
49
  needs_xon_xoff                = 21;
 
50
  prtr_silent                   = 22;
 
51
  hard_cursor                   = 23;
 
52
  non_rev_rmcup                 = 24;
 
53
  no_pad_char                   = 25;
 
54
  non_dest_scroll_region        = 26;
 
55
  can_change                    = 27;
 
56
  back_color_erase              = 28;
 
57
  hue_lightness_saturation      = 29;
 
58
  col_addr_glitch               = 30;
 
59
  cr_cancels_micro_mode         = 31;
 
60
  has_print_wheel               = 32;
 
61
  row_addr_glitch               = 33;
 
62
  semi_auto_right_margin        = 34;
 
63
  cpi_changes_res               = 35;
 
64
  lpi_changes_res               = 36;
 
65
 
 
66
  { numbers ... }
 
67
  columns                       = 0;
 
68
  init_tabs                     = 1;
 
69
  lines                         = 2;
 
70
  lines_of_memory               = 3;
 
71
  magic_cookie_glitch           = 4;
 
72
  padding_baud_rate             = 5;
 
73
  virtual_terminal              = 6;
 
74
  width_status_line             = 7;
 
75
  num_labels                    = 8;
 
76
  label_height                  = 9;
 
77
  label_width                   = 10;
 
78
  max_attributes                = 11;
 
79
  maximum_windows               = 12;
 
80
  max_colors                    = 13;
 
81
  max_pairs                     = 14;
 
82
  no_color_video                = 15;
 
83
  buffer_capacity               = 16;
 
84
  dot_vert_spacing              = 17;
 
85
  dot_horz_spacing              = 18;
 
86
  max_micro_address             = 19;
 
87
  max_micro_jump                = 20;
 
88
  micro_char_size               = 21;
 
89
  micro_line_size               = 22;
 
90
  number_of_pins                = 23;
 
91
  output_res_char               = 24;
 
92
  output_res_line               = 25;
 
93
  output_res_horz_inch          = 26;
 
94
  output_res_vert_inch          = 27;
 
95
  print_rate                    = 28;
 
96
  wide_char_size                = 29;
 
97
  buttons                       = 30;
 
98
  bit_image_entwining           = 31;
 
99
  bit_image_type                = 32;
 
100
 
 
101
  { strings }
 
102
  back_tab                      = 0;
 
103
  bell                          = 1;
 
104
  carriage_return               = 2;
 
105
  change_scroll_region          = 3;
 
106
  clear_all_tabs                = 4;
 
107
  clear_screen                  = 5;
 
108
  clr_eol                       = 6;
 
109
  clr_eos                       = 7;
 
110
  column_address                = 8;
 
111
  command_character             = 9;
 
112
  cursor_address                = 10;
 
113
  cursor_down                   = 11;
 
114
  cursor_home                   = 12;
 
115
  cursor_invisible              = 13;
 
116
  cursor_left                   = 14;
 
117
  cursor_mem_address            = 15;
 
118
  cursor_normal                 = 16;
 
119
  cursor_right                  = 17;
 
120
  cursor_to_ll                  = 18;
 
121
  cursor_up                     = 19;
 
122
  cursor_visible                = 20;
 
123
  delete_character              = 21;
 
124
  delete_line                   = 22;
 
125
  dis_status_line               = 23;
 
126
  down_half_line                = 24;
 
127
  enter_alt_charset_mode        = 25;
 
128
  enter_blink_mode              = 26;
 
129
  enter_bold_mode               = 27;
 
130
  enter_ca_mode                 = 28;
 
131
  enter_delete_mode             = 29;
 
132
  enter_dim_mode                = 30;
 
133
  enter_insert_mode             = 31;
 
134
  enter_secure_mode             = 32;
 
135
  enter_protected_mode          = 33;
 
136
  enter_reverse_mode            = 34;
 
137
  enter_standout_mode           = 35;
 
138
  enter_underline_mode          = 36;
 
139
  erase_chars                   = 37;
 
140
  exit_alt_charset_mode         = 38;
 
141
  exit_attribute_mode           = 39;
 
142
  exit_ca_mode                  = 40;
 
143
  exit_delete_mode              = 41;
 
144
  exit_insert_mode              = 42;
 
145
  exit_standout_mode            = 43;
 
146
  exit_underline_mode           = 44;
 
147
  flash_screen                  = 45;
 
148
  form_feed                     = 46;
 
149
  from_status_line              = 47;
 
150
  init_1string                  = 48;
 
151
  init_2string                  = 49;
 
152
  init_3string                  = 50;
 
153
  init_file                     = 51;
 
154
  insert_character              = 52;
 
155
  insert_line                   = 53;
 
156
  insert_padding                = 54;
 
157
  key_backspace                 = 55;
 
158
  key_catab                     = 56;
 
159
  key_clear                     = 57;
 
160
  key_ctab                      = 58;
 
161
  key_dc                        = 59;
 
162
  key_dl                        = 60;
 
163
  key_down                      = 61;
 
164
  key_eic                       = 62;
 
165
  key_eol                       = 63;
 
166
  key_eos                       = 64;
 
167
  key_f0                        = 65;
 
168
  key_f1                        = 66;
 
169
  key_f10                       = 67;
 
170
  key_f2                        = 68;
 
171
  key_f3                        = 69;
 
172
  key_f4                        = 70;
 
173
  key_f5                        = 71;
 
174
  key_f6                        = 72;
 
175
  key_f7                        = 73;
 
176
  key_f8                        = 74;
 
177
  key_f9                        = 75;
 
178
  key_home                      = 76;
 
179
  key_ic                        = 77;
 
180
  key_il                        = 78;
 
181
  key_left                      = 79;
 
182
  key_ll                        = 80;
 
183
  key_npage                     = 81;
 
184
  key_ppage                     = 82;
 
185
  key_right                     = 83;
 
186
  key_sf                        = 84;
 
187
  key_sr                        = 85;
 
188
  key_stab                      = 86;
 
189
  key_up                        = 87;
 
190
  keypad_local                  = 88;
 
191
  keypad_xmit                   = 89;
 
192
  lab_f0                        = 90;
 
193
  lab_f1                        = 91;
 
194
  lab_f10                       = 92;
 
195
  lab_f2                        = 93;
 
196
  lab_f3                        = 94;
 
197
  lab_f4                        = 95;
 
198
  lab_f5                        = 96;
 
199
  lab_f6                        = 97;
 
200
  lab_f7                        = 98;
 
201
  lab_f8                        = 99;
 
202
  lab_f9                        = 100;
 
203
  meta_off                      = 101;
 
204
  meta_on                       = 102;
 
205
  newline                       = 103;
 
206
  pad_char                      = 104;
 
207
  parm_dch                      = 105;
 
208
  parm_delete_line              = 106;
 
209
  parm_down_cursor              = 107;
 
210
  parm_ich                      = 108;
 
211
  parm_index                    = 109;
 
212
  parm_insert_line              = 110;
 
213
  parm_left_cursor              = 111;
 
214
  parm_right_cursor             = 112;
 
215
  parm_rindex                   = 113;
 
216
  parm_up_cursor                = 114;
 
217
  pkey_key                      = 115;
 
218
  pkey_local                    = 116;
 
219
  pkey_xmit                     = 117;
 
220
  print_screen                  = 118;
 
221
  prtr_off                      = 119;
 
222
  prtr_on                       = 120;
 
223
  repeat_char                   = 121;
 
224
  reset_1string                 = 122;
 
225
  reset_2string                 = 123;
 
226
  reset_3string                 = 124;
 
227
  reset_file                    = 125;
 
228
  restore_cursor                = 126;
 
229
  row_address                   = 127;
 
230
  save_cursor                   = 128;
 
231
  scroll_forward                = 129;
 
232
  scroll_reverse                = 130;
 
233
  set_attributes                = 131;
 
234
  set_tab                       = 132;
 
235
  set_window                    = 133;
 
236
  tab                           = 134;
 
237
  to_status_line                = 135;
 
238
  underline_char                = 136;
 
239
  up_half_line                  = 137;
 
240
  init_prog                     = 138;
 
241
  key_a1                        = 139;
 
242
  key_a3                        = 140;
 
243
  key_b2                        = 141;
 
244
  key_c1                        = 142;
 
245
  key_c3                        = 143;
 
246
  prtr_non                      = 144;
 
247
  char_padding                  = 145;
 
248
  acs_chars                     = 146;
 
249
  plab_norm                     = 147;
 
250
  key_btab                      = 148;
 
251
  enter_xon_mode                = 149;
 
252
  exit_xon_mode                 = 150;
 
253
  enter_am_mode                 = 151;
 
254
  exit_am_mode                  = 152;
 
255
  xon_character                 = 153;
 
256
  xoff_character                = 154;
 
257
  ena_acs                       = 155;
 
258
  label_on                      = 156;
 
259
  label_off                     = 157;
 
260
  key_beg                       = 158;
 
261
  key_cancel                    = 159;
 
262
  key_close                     = 160;
 
263
  key_command                   = 161;
 
264
  key_copy                      = 162;
 
265
  key_create                    = 163;
 
266
  key_end                       = 164;
 
267
  key_enter                     = 165;
 
268
  key_exit                      = 166;
 
269
  key_find                      = 167;
 
270
  key_help                      = 168;
 
271
  key_mark                      = 169;
 
272
  key_message                   = 170;
 
273
  key_move                      = 171;
 
274
  key_next                      = 172;
 
275
  key_open                      = 173;
 
276
  key_options                   = 174;
 
277
  key_previous                  = 175;
 
278
  key_print                     = 176;
 
279
  key_redo                      = 177;
 
280
  key_reference                 = 178;
 
281
  key_refresh                   = 179;
 
282
  key_replace                   = 180;
 
283
  key_restart                   = 181;
 
284
  key_resume                    = 182;
 
285
  key_save                      = 183;
 
286
  key_suspend                   = 184;
 
287
  key_undo                      = 185;
 
288
  key_sbeg                      = 186;
 
289
  key_scancel                   = 187;
 
290
  key_scommand                  = 188;
 
291
  key_scopy                     = 189;
 
292
  key_screate                   = 190;
 
293
  key_sdc                       = 191;
 
294
  key_sdl                       = 192;
 
295
  key_select                    = 193;
 
296
  key_send                      = 194;
 
297
  key_seol                      = 195;
 
298
  key_sexit                     = 196;
 
299
  key_sfind                     = 197;
 
300
  key_shelp                     = 198;
 
301
  key_shome                     = 199;
 
302
  key_sic                       = 200;
 
303
  key_sleft                     = 201;
 
304
  key_smessage                  = 202;
 
305
  key_smove                     = 203;
 
306
  key_snext                     = 204;
 
307
  key_soptions                  = 205;
 
308
  key_sprevious                 = 206;
 
309
  key_sprint                    = 207;
 
310
  key_sredo                     = 208;
 
311
  key_sreplace                  = 209;
 
312
  key_sright                    = 210;
 
313
  key_srsume                    = 211;
 
314
  key_ssave                     = 212;
 
315
  key_ssuspend                  = 213;
 
316
  key_sundo                     = 214;
 
317
  req_for_input                 = 215;
 
318
  key_f11                       = 216;
 
319
  key_f12                       = 217;
 
320
  key_f13                       = 218;
 
321
  key_f14                       = 219;
 
322
  key_f15                       = 220;
 
323
  key_f16                       = 221;
 
324
  key_f17                       = 222;
 
325
  key_f18                       = 223;
 
326
  key_f19                       = 224;
 
327
  key_f20                       = 225;
 
328
  key_f21                       = 226;
 
329
  key_f22                       = 227;
 
330
  key_f23                       = 228;
 
331
  key_f24                       = 229;
 
332
  key_f25                       = 230;
 
333
  key_f26                       = 231;
 
334
  key_f27                       = 232;
 
335
  key_f28                       = 233;
 
336
  key_f29                       = 234;
 
337
  key_f30                       = 235;
 
338
  key_f31                       = 236;
 
339
  key_f32                       = 237;
 
340
  key_f33                       = 238;
 
341
  key_f34                       = 239;
 
342
  key_f35                       = 240;
 
343
  key_f36                       = 241;
 
344
  key_f37                       = 242;
 
345
  key_f38                       = 243;
 
346
  key_f39                       = 244;
 
347
  key_f40                       = 245;
 
348
  key_f41                       = 246;
 
349
  key_f42                       = 247;
 
350
  key_f43                       = 248;
 
351
  key_f44                       = 249;
 
352
  key_f45                       = 250;
 
353
  key_f46                       = 251;
 
354
  key_f47                       = 252;
 
355
  key_f48                       = 253;
 
356
  key_f49                       = 254;
 
357
  key_f50                       = 255;
 
358
  key_f51                       = 256;
 
359
  key_f52                       = 257;
 
360
  key_f53                       = 258;
 
361
  key_f54                       = 259;
 
362
  key_f55                       = 260;
 
363
  key_f56                       = 261;
 
364
  key_f57                       = 262;
 
365
  key_f58                       = 263;
 
366
  key_f59                       = 264;
 
367
  key_f60                       = 265;
 
368
  key_f61                       = 266;
 
369
  key_f62                       = 267;
 
370
  key_f63                       = 268;
 
371
  clr_bol                       = 269;
 
372
  clear_margins                 = 270;
 
373
  set_left_margin               = 271;
 
374
  set_right_margin              = 272;
 
375
  label_format                  = 273;
 
376
  set_clock                     = 274;
 
377
  display_clock                 = 275;
 
378
  remove_clock                  = 276;
 
379
  create_window                 = 277;
 
380
  goto_window                   = 278;
 
381
  hangup                        = 279;
 
382
  dial_phone                    = 280;
 
383
  quick_dial                    = 281;
 
384
  tone                          = 282;
 
385
  pulse                         = 283;
 
386
  flash_hook                    = 284;
 
387
  fixed_pause                   = 285;
 
388
  wait_tone                     = 286;
 
389
  user0                         = 287;
 
390
  user1                         = 288;
 
391
  user2                         = 289;
 
392
  user3                         = 290;
 
393
  user4                         = 291;
 
394
  user5                         = 292;
 
395
  user6                         = 293;
 
396
  user7                         = 294;
 
397
  user8                         = 295;
 
398
  user9                         = 296;
 
399
  orig_pair                     = 297;
 
400
  orig_colors                   = 298;
 
401
  initialize_color              = 299;
 
402
  initialize_pair               = 300;
 
403
  set_color_pair                = 301;
 
404
  set_foreground                = 302;
 
405
  set_background                = 303;
 
406
  change_char_pitch             = 304;
 
407
  change_line_pitch             = 305;
 
408
  change_res_horz               = 306;
 
409
  change_res_vert               = 307;
 
410
  define_char                   = 308;
 
411
  enter_doublewide_mode         = 309;
 
412
  enter_draft_quality           = 310;
 
413
  enter_italics_mode            = 311;
 
414
  enter_leftward_mode           = 312;
 
415
  enter_micro_mode              = 313;
 
416
  enter_near_letter_quality     = 314;
 
417
  enter_normal_quality          = 315;
 
418
  enter_shadow_mode             = 316;
 
419
  enter_subscript_mode          = 317;
 
420
  enter_superscript_mode        = 318;
 
421
  enter_upward_mode             = 319;
 
422
  exit_doublewide_mode          = 320;
 
423
  exit_italics_mode             = 321;
 
424
  exit_leftward_mode            = 322;
 
425
  exit_micro_mode               = 323;
 
426
  exit_shadow_mode              = 324;
 
427
  exit_subscript_mode           = 325;
 
428
  exit_superscript_mode         = 326;
 
429
  exit_upward_mode              = 327;
 
430
  micro_column_address          = 328;
 
431
  micro_down                    = 329;
 
432
  micro_left                    = 330;
 
433
  micro_right                   = 331;
 
434
  micro_row_address             = 332;
 
435
  micro_up                      = 333;
 
436
  order_of_pins                 = 334;
 
437
  parm_down_micro               = 335;
 
438
  parm_left_micro               = 336;
 
439
  parm_right_micro              = 337;
 
440
  parm_up_micro                 = 338;
 
441
  select_char_set               = 339;
 
442
  set_bottom_margin             = 340;
 
443
  set_bottom_margin_parm        = 341;
 
444
  set_left_margin_parm          = 342;
 
445
  set_right_margin_parm         = 343;
 
446
  set_top_margin                = 344;
 
447
  set_top_margin_parm           = 345;
 
448
  start_bit_image               = 346;
 
449
  start_char_set_def            = 347;
 
450
  stop_bit_image                = 348;
 
451
  stop_char_set_def             = 349;
 
452
  subscript_characters          = 350;
 
453
  superscript_characters        = 351;
 
454
  these_cause_cr                = 352;
 
455
  zero_motion                   = 353;
 
456
  char_set_names                = 354;
 
457
  key_mouse                     = 355;
 
458
  mouse_info                    = 356;
 
459
  req_mouse_pos                 = 357;
 
460
  get_mouse                     = 358;
 
461
  set_a_foreground              = 359;
 
462
  set_a_background              = 360;
 
463
  pkey_plab                     = 361;
 
464
  device_type                   = 362;
 
465
  code_set_init                 = 363;
 
466
  set0_des_seq                  = 364;
 
467
  set1_des_seq                  = 365;
 
468
  set2_des_seq                  = 366;
 
469
  set3_des_seq                  = 367;
 
470
  set_lr_margin                 = 368;
 
471
  set_tb_margin                 = 369;
 
472
  bit_image_repeat              = 370;
 
473
  bit_image_newline             = 371;
 
474
  bit_image_carriage_return     = 372;
 
475
  color_names                   = 373;
 
476
  define_bit_image_region       = 374;
 
477
  end_bit_image_region          = 375;
 
478
  set_color_band                = 376;
 
479
  set_page_length               = 377;
 
480
  display_pc_char               = 378;
 
481
  enter_pc_charset_mode         = 379;
 
482
  exit_pc_charset_mode          = 380;
 
483
  enter_scancode_mode           = 381;
 
484
  exit_scancode_mode            = 382;
 
485
  pc_term_options               = 383;
 
486
  scancode_escape               = 384;
 
487
  alt_scancode_esc              = 385;
 
488
  enter_horizontal_hl_mode      = 386;
 
489
  enter_left_hl_mode            = 387;
 
490
  enter_low_hl_mode             = 388;
 
491
  enter_right_hl_mode           = 389;
 
492
  enter_top_hl_mode             = 390;
 
493
  enter_vertical_hl_mode        = 391;
 
494
 
 
495
  { older synonyms for some booleans }
 
496
  beehive_glitch                = no_esc_ctlc;
 
497
  teleray_glitch                = dest_tabs_magic_smso;
 
498
  micro_col_size                = micro_char_size;
 
499
  { internal }
 
500
  termcap_init2               = 392;
 
501
  termcap_reset               = 393;
 
502
  magic_cookie_glitch_ul      = 33;
 
503
  backspaces_with_bs          = 37;
 
504
  crt_no_scrolling            = 38;
 
505
  no_correctly_working_cr     = 39;
 
506
  carriage_return_delay       = 34;
 
507
  new_line_delay              = 35;
 
508
  linefeed_if_not_lf          = 394;
 
509
  backspace_if_not_bs         = 395;
 
510
  gnu_has_meta_key            = 40;
 
511
  linefeed_is_newline         = 41;
 
512
  backspace_delay             = 36;
 
513
  horizontal_tab_delay        = 37;
 
514
  number_of_function_keys     = 38;
 
515
  other_non_function_keys     = 396;
 
516
  arrow_key_map               = 397;
 
517
  has_hardware_tabs           = 42;
 
518
  return_does_clr_eol         = 43;
 
519
  acs_ulcorner                = 398;
 
520
  acs_llcorner                = 399;
 
521
  acs_urcorner                = 400;
 
522
  acs_lrcorner                = 401;
 
523
  acs_ltee                    = 402;
 
524
  acs_rtee                    = 403;
 
525
  acs_btee                    = 404;
 
526
  acs_ttee                    = 405;
 
527
  acs_hline                   = 406;
 
528
  acs_vline                   = 407;
 
529
  acs_plus                    = 408;
 
530
  memory_lock                 = 409;
 
531
  memory_unlock               = 410;
 
532
  box_chars_1                 = 411;
 
533
 
 
534
 
 
535
const
 
536
  NCCS = 32;
 
537
  BoolCount = 44;
 
538
  NumCount = 39;
 
539
  StrCount = 412;
 
540
 
 
541
type
 
542
  TCFlag_t = Longint;
 
543
  Speed_t = Longint;
 
544
  TermIOS = record
 
545
    c_iflag, c_oflag, c_cflag, c_lflag: TCFlag_t;
 
546
    c_line: Byte;
 
547
    c_cc: array [0..NCCS-1] of Char;
 
548
    c_ispeed, c_ospeed: Speed_t;
 
549
    Pad: word;
 
550
  end;
 
551
 
 
552
  TT_BoolArray = array [0..BoolCount - 1] of Boolean;
 
553
  TT_WordArray = array [0..NumCount - 1] of Word;
 
554
  TT_PCharArray = array [0..StrCount - 1] of PChar;
 
555
 
 
556
  TermType4 = record
 
557
    Term_Names: PChar;
 
558
    Str_Table: PChar;
 
559
    Booleans: TT_BoolArray;
 
560
    Numbers: TT_WordArray;
 
561
    Strings: TT_PCharArray;
 
562
  end;
 
563
 
 
564
  Terminal_ptr4 = ^Terminal4;
 
565
  Terminal4 = record
 
566
    TType: TermType4;
 
567
    FileDes: Word;
 
568
    Ottyb, Nttyb: Termios;
 
569
    Pad: longint;
 
570
  end;
 
571
 
 
572
  TermType5 = record
 
573
    Term_Names: PChar;
 
574
    Str_Table: PChar;
 
575
    Booleans: ^TT_BoolArray;
 
576
    Numbers: ^TT_WordArray;
 
577
    Strings: ^TT_PCharArray;
 
578
  end;
 
579
 
 
580
  Terminal_ptr5 = ^Terminal5;
 
581
  Terminal5 = record
 
582
    TType: TermType5;
 
583
    FileDes: Word;
 
584
    Ottyb, Nttyb: Termios;
 
585
    Pad: longint;
 
586
  end;
 
587
 
 
588
  TerminalCommon_ptr1 = ^TerminalCommon1;
 
589
  TerminalCommon1 = record
 
590
    Term_Names: PChar;
 
591
    Str_Table: PChar;
 
592
  end;
 
593
 
 
594
  TerminalCommon_ptr2 = ^TerminalCommon2;
 
595
  TerminalCommon2 = record
 
596
    FileDes: Word;
 
597
    Ottyb, Nttyb: Termios;
 
598
    Pad: longint;
 
599
  end;
 
600
 
 
601
  WriterFunc = function (P: PChar): Longint;
 
602
 
 
603
var
 
604
{$ifndef darwin}
 
605
  cur_term : TerminalCommon_ptr1; cvar; external;
 
606
{$else darwin}
 
607
  cur_term : TerminalCommon_ptr1; external curseslib name 'cur_term';
 
608
{$endif darwin}
 
609
  cur_term_booleans: ^TT_BoolArray;
 
610
  cur_term_numbers: ^TT_WordArray;
 
611
  cur_term_strings: ^TT_PCharArray;
 
612
  cur_term_common: TerminalCommon_ptr2;
 
613
 
 
614
const
 
615
  cur_term_valid : boolean = false;
 
616
 
 
617
{ Note: the following two procedures expect a pointer to a full terminfo }
 
618
{ structure, not just to the common parts. However, since this structure }
 
619
{ differs for different versions of ncurses,it's impossible to give a    }
 
620
{ general declaration here which is correct (JM)                         }
 
621
function set_curterm(term: TerminalCommon_ptr1): TerminalCommon_ptr1;cdecl; external curseslib name 'set_curterm';
 
622
function del_curterm(term: TerminalCommon_ptr1): Longint;
 
623
 
 
624
{ sets whether to use environment variables for LINES and COLUMNS }
 
625
procedure use_env(B: Longint); cdecl; external curseslib name 'use_env';
 
626
 
 
627
function putp(Ndx: Longint): Longint;
 
628
 
 
629
{ this function must be called before any terminal properties are accessed }
 
630
function setupterm(Term: PChar; fd: Longint; var ErrCode: Longint): Longint;
 
631
 
 
632
{ reinitialize lib }
 
633
function restartterm(Term: PChar; fd: Longint; var ErrCode: Longint): Longint; cdecl; external curseslib name 'restartterm';
 
634
 
 
635
{function tgetent(P1, P2: PChar): Longint;
 
636
function tgetflag(P: PChar): Longint;
 
637
function tgetnum(P: PChar): Longint;
 
638
function tgoto(P: PChar; L1, L2: Longint): PChar;
 
639
function tgetstr(P: PChar; var R: PChar): PChar;
 
640
function tigetflag(P: PChar): Longint;
 
641
function tigetnum(P: PChar): Longint;
 
642
function tigetstr(P: PChar): PChar;
 
643
function tparm(P: PChar, ...): PChar;
 
644
function tparam(const char *, char *, int, ...): PChar;}
 
645
function tputs(Ndx: Word; L1: Longint; F: WriterFunc): Longint;
 
646
 
 
647
implementation
 
648
 
 
649
uses
 
650
  baseUnix;
 
651
 
 
652
function putp(Ndx: Longint): Longint;
 
653
var
 
654
  P: PChar;
 
655
begin
 
656
  if not assigned(cur_term) then
 
657
    RunError(219);
 
658
  P := cur_term_strings^[Ndx];
 
659
  putp := fpWrite(cur_term_common^.filedes, P^, StrLen(P));
 
660
end;
 
661
 
 
662
function tputs(Ndx: Word; L1: Longint; F: WriterFunc): Longint;
 
663
var
 
664
  P: PChar;
 
665
begin
 
666
  if not assigned(cur_term) then
 
667
    RunError(219);
 
668
  { L1 := L1; why was this here ?? PM }
 
669
  P := cur_term_strings^[Ndx];
 
670
  tputs := F(P);
 
671
end;
 
672
 
 
673
//function set_curterm(term: TerminalCommon_ptr1): TerminalCommon_ptr1; cdecl; external curseslib;
 
674
 
 
675
// function restartterm(Term: PChar; fd: Longint; var ErrCode: Longint): Longint; cdecl; external curseslib;
 
676
 
 
677
function setuptermC(Term: PChar; fd: Longint; var ErrCode: Longint): Longint; cdecl; external curseslib name 'setupterm';
 
678
 
 
679
function setupterm(Term: PChar; fd: Longint; var ErrCode: Longint): Longint;
 
680
var
 
681
  versioncheck: longint;
 
682
begin
 
683
  setupterm := setuptermC(term,fd,errcode);
 
684
  if not assigned(cur_term) then
 
685
    exit;
 
686
  cur_term_valid := true;
 
687
  versioncheck := 0;
 
688
  repeat
 
689
    if (Terminal_ptr4(cur_term)^.ttype.Booleans[versioncheck] in [false,true]) then
 
690
      inc(versioncheck)
 
691
    else versioncheck := -1;
 
692
  until (versioncheck = BoolCount) or
 
693
        (versioncheck = -1);
 
694
  if versioncheck = BoolCount then
 
695
    { version 4.x }
 
696
    begin
 
697
      cur_term_booleans := @Terminal_ptr4(cur_term)^.ttype.Booleans;
 
698
      cur_term_numbers := @Terminal_ptr4(cur_term)^.ttype.Numbers;
 
699
      cur_term_strings := @Terminal_ptr4(cur_term)^.ttype.Strings;
 
700
      cur_term_common := pointer(@Terminal_ptr4(cur_term)^.FileDes);
 
701
    end
 
702
  else
 
703
    { assume 5.x or higher }
 
704
    begin
 
705
      cur_term_booleans := Terminal_ptr5(cur_term)^.ttype.Booleans;
 
706
      cur_term_numbers := Terminal_ptr5(cur_term)^.ttype.Numbers;
 
707
      cur_term_strings := Terminal_ptr5(cur_term)^.ttype.Strings;
 
708
      cur_term_common := pointer(@Terminal_ptr5(cur_term)^.FileDes);
 
709
    end;
 
710
end;
 
711
 
 
712
function del_curtermC(term: TerminalCommon_ptr1): Longint; cdecl; external curseslib name 'del_curterm';
 
713
 
 
714
function del_curterm(term: TerminalCommon_ptr1): Longint;
 
715
var
 
716
  reset_cur_term : boolean;
 
717
begin
 
718
  if term=cur_term then
 
719
    begin
 
720
      cur_term_booleans := nil;
 
721
      cur_term_numbers := nil;
 
722
      cur_term_strings := nil;
 
723
      cur_term_common := nil;
 
724
      reset_cur_term := true;
 
725
    end
 
726
  else
 
727
    reset_cur_term := false;
 
728
  del_curterm := del_curtermC(term);
 
729
  if reset_cur_term then
 
730
    cur_term_valid := false;
 
731
end;
 
732
 
 
733
{function tgetent(P1, P2: PChar): Longint; cdecl; external;
 
734
function tgetflag(P: PChar): Longint; cdecl; external;
 
735
function tgetnum(P: PChar): Longint; cdecl; external;
 
736
function tgoto(P: PChar; L1, L2: Longint): PChar; cdecl; external;
 
737
function tgetstr(P: PChar; var R: PChar): PChar; cdecl; external;
 
738
function tigetflag(P: PChar): Longint; cdecl; external;
 
739
function tigetnum(P: PChar): Longint; cdecl; external;
 
740
function tigetstr(P: PChar): PChar; cdecl; external;
 
741
function tparm(P: PChar; ...): PChar; cdecl; external;
 
742
function tparam(const char *, char *, int, ...): PChar; cdecl; external;}
 
743
 
 
744
end.