317 };
318
319 /*
320 * Linked list of targets/files
321 */
322 struct _Dependency {
323 struct _Dependency *next;
324 struct _Name *name;
325 Boolean automatic:1;
326 Boolean stale:1;
327 Boolean built:1;
328 };
329
330 /*
331 * The specials are markers for targets that the reader should special case
332 */
333 typedef enum {
334 no_special,
335 built_last_make_run_special,
336 default_special,
337 #ifdef NSE
338 derived_src_special,
339 #endif
340 get_posix_special,
341 get_special,
342 ignore_special,
343 keep_state_file_special,
344 keep_state_special,
345 make_version_special,
346 no_parallel_special,
347 parallel_special,
348 posix_special,
349 precious_special,
350 sccs_get_posix_special,
351 sccs_get_special,
352 silent_special,
353 suffixes_special,
354 svr4_special,
355 localhost_special
356 } Special;
357
358 typedef enum {
359 no_colon,
401 typedef enum {
402 no_daemon = 0,
403 chain_daemon
404 } Daemon;
405
406 struct _Env_mem {
407 char *value;
408 };
409
410 struct _Macro_appendix {
411 struct _Name *value;
412 struct _Name *value_to_append;
413 };
414
415 struct _Macro {
416 /*
417 * For "ABC = xyz" constructs
418 * Name "ABC" get one macro prop
419 */
420 struct _Name *value;
421 #ifdef NSE
422 Boolean imported:1;
423 #endif
424 Boolean exported:1;
425 Boolean read_only:1;
426 /*
427 * This macro is defined conditionally
428 */
429 Boolean is_conditional:1;
430 /*
431 * The list for $? is stored as a structured list that
432 * is translated into a string iff it is referenced.
433 * This is why some macro values need a daemon.
434 */
435 Daemon daemon:2;
436 };
437
438 struct _Macro_list {
439 struct _Macro_list *next;
440 char *macro_name;
441 char *value;
442 };
443
445 DONT_KNOW_SCCS = 0,
446 NO_SCCS,
447 HAS_SCCS
448 };
449
450 struct _Name {
451 struct _Property *prop; /* List of properties */
452 char *string_mb; /* Multi-byte name string */
453 struct {
454 unsigned int length;
455 } hash;
456 struct {
457 timestruc_t time; /* Modification */
458 int stat_errno; /* error from "stat" */
459 off_t size; /* Of file */
460 mode_t mode; /* Of file */
461 Boolean is_file:1;
462 Boolean is_dir:1;
463 Boolean is_sym_link:1;
464 Boolean is_precious:1;
465 #ifdef NSE
466 Boolean is_derived_src:1;
467 #endif
468 enum sccs_stat has_sccs:2;
469 } stat;
470 /*
471 * Count instances of :: definitions for this target
472 */
473 short colon_splits;
474 /*
475 * We only clear the automatic depes once per target per report
476 */
477 short temp_file_number;
478 /*
479 * Count how many conditional macros this target has defined
480 */
481 short conditional_cnt;
482 /*
483 * A conditional macro was used when building this target
484 */
485 Boolean depends_on_conditional:1;
486 /*
487 * Pointer to list of conditional macros which were used to build
|
317 };
318
319 /*
320 * Linked list of targets/files
321 */
322 struct _Dependency {
323 struct _Dependency *next;
324 struct _Name *name;
325 Boolean automatic:1;
326 Boolean stale:1;
327 Boolean built:1;
328 };
329
330 /*
331 * The specials are markers for targets that the reader should special case
332 */
333 typedef enum {
334 no_special,
335 built_last_make_run_special,
336 default_special,
337 get_posix_special,
338 get_special,
339 ignore_special,
340 keep_state_file_special,
341 keep_state_special,
342 make_version_special,
343 no_parallel_special,
344 parallel_special,
345 posix_special,
346 precious_special,
347 sccs_get_posix_special,
348 sccs_get_special,
349 silent_special,
350 suffixes_special,
351 svr4_special,
352 localhost_special
353 } Special;
354
355 typedef enum {
356 no_colon,
398 typedef enum {
399 no_daemon = 0,
400 chain_daemon
401 } Daemon;
402
403 struct _Env_mem {
404 char *value;
405 };
406
407 struct _Macro_appendix {
408 struct _Name *value;
409 struct _Name *value_to_append;
410 };
411
412 struct _Macro {
413 /*
414 * For "ABC = xyz" constructs
415 * Name "ABC" get one macro prop
416 */
417 struct _Name *value;
418 Boolean exported:1;
419 Boolean read_only:1;
420 /*
421 * This macro is defined conditionally
422 */
423 Boolean is_conditional:1;
424 /*
425 * The list for $? is stored as a structured list that
426 * is translated into a string iff it is referenced.
427 * This is why some macro values need a daemon.
428 */
429 Daemon daemon:2;
430 };
431
432 struct _Macro_list {
433 struct _Macro_list *next;
434 char *macro_name;
435 char *value;
436 };
437
439 DONT_KNOW_SCCS = 0,
440 NO_SCCS,
441 HAS_SCCS
442 };
443
444 struct _Name {
445 struct _Property *prop; /* List of properties */
446 char *string_mb; /* Multi-byte name string */
447 struct {
448 unsigned int length;
449 } hash;
450 struct {
451 timestruc_t time; /* Modification */
452 int stat_errno; /* error from "stat" */
453 off_t size; /* Of file */
454 mode_t mode; /* Of file */
455 Boolean is_file:1;
456 Boolean is_dir:1;
457 Boolean is_sym_link:1;
458 Boolean is_precious:1;
459 enum sccs_stat has_sccs:2;
460 } stat;
461 /*
462 * Count instances of :: definitions for this target
463 */
464 short colon_splits;
465 /*
466 * We only clear the automatic depes once per target per report
467 */
468 short temp_file_number;
469 /*
470 * Count how many conditional macros this target has defined
471 */
472 short conditional_cnt;
473 /*
474 * A conditional macro was used when building this target
475 */
476 Boolean depends_on_conditional:1;
477 /*
478 * Pointer to list of conditional macros which were used to build
|