Hex Artifact Content

Artifact 33f89d18c6842d95c66fc244f05fd0d906d2f095:


0000: 2e 54 48 20 4c 43 5f 52 45 47 49 53 54 45 52 5f  .TH LC_REGISTER_
0010: 56 41 52 20 33 20 22 32 35 20 4f 63 74 20 30 34  VAR 3 "25 Oct 04
0020: 22 20 22 40 50 41 43 4b 41 47 45 5f 53 54 52 49  " "@PACKAGE_STRI
0030: 4e 47 40 22 0a 2e 53 48 20 4e 41 4d 45 0a 6c 63  NG@"..SH NAME.lc
0040: 5f 72 65 67 69 73 74 65 72 5f 76 61 72 20 5c 2d  _register_var \-
0050: 20 52 65 67 69 73 74 65 72 20 61 20 76 61 72 69   Register a vari
0060: 61 62 6c 65 20 66 6f 72 20 61 75 74 6f 6d 61 74  able for automat
0070: 69 63 20 70 72 6f 63 65 73 73 69 6e 67 2e 0a 0a  ic processing...
0080: 2e 53 48 20 53 59 4e 4f 50 53 49 53 0a 2e 42 20  .SH SYNOPSIS..B 
0090: 23 69 6e 63 6c 75 64 65 20 3c 6c 69 62 63 6f 6e  #include <libcon
00a0: 66 69 67 2e 68 3e 0a 2e 73 70 0a 2e 42 49 20 22  fig.h>..sp..BI "
00b0: 69 6e 74 20 6c 63 5f 72 65 67 69 73 74 65 72 5f  int lc_register_
00c0: 76 61 72 28 63 6f 6e 73 74 20 63 68 61 72 20 2a  var(const char *
00d0: 22 20 76 61 72 20 22 2c 20 6c 63 5f 76 61 72 5f  " var ", lc_var_
00e0: 74 79 70 65 5f 74 20 22 20 74 79 70 65 20 22 2c  type_t " type ",
00f0: 20 76 6f 69 64 20 2a 22 20 64 61 74 61 20 22 2c   void *" data ",
0100: 20 63 68 61 72 20 22 20 6f 70 74 20 22 29 3b 22   char " opt ");"
0110: 0a 0a 2e 53 48 20 44 45 53 43 52 49 50 54 49 4f  ...SH DESCRIPTIO
0120: 4e 0a 54 68 65 0a 2e 42 52 20 6c 63 5f 72 65 67  N.The..BR lc_reg
0130: 69 73 74 65 72 5f 76 61 72 20 28 33 29 0a 66 75  ister_var (3).fu
0140: 6e 63 74 69 6f 6e 20 72 65 67 69 73 74 65 72 73  nction registers
0150: 20 61 20 76 61 72 69 61 62 6c 65 20 66 6f 72 20   a variable for 
0160: 61 75 74 6f 6d 61 74 69 63 20 70 72 6f 63 65 73  automatic proces
0170: 73 69 6e 67 2e 0a 54 68 65 0a 2e 49 52 20 76 61  sing..The..IR va
0180: 72 0a 70 61 72 61 6d 65 74 65 72 20 73 70 65 63  r.parameter spec
0190: 69 66 69 65 73 20 74 68 65 20 76 61 72 69 61 62  ifies the variab
01a0: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 70 72 6f 63  le name for proc
01b0: 65 73 73 69 6e 67 2e 20 20 54 68 69 73 20 6e 61  essing.  This na
01c0: 6d 65 20 63 61 6e 20 65 78 69 73 74 20 69 6e 20  me can exist in 
01d0: 61 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  a configuration 
01e0: 66 69 6c 65 2c 20 61 6e 20 65 6e 76 69 72 6f 6e  file, an environ
01f0: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 2c 20 6f  ment variable, o
0200: 72 20 6f 6e 20 74 68 65 20 63 6f 6d 6d 61 6e 64  r on the command
0210: 20 6c 69 6e 65 2e 0a 54 68 65 0a 2e 49 52 20 6f   line..The..IR o
0220: 70 74 0a 70 61 72 61 6d 65 74 65 72 20 73 70 65  pt.parameter spe
0230: 63 69 66 69 65 73 20 74 68 65 20 73 69 6e 67 6c  cifies the singl
0240: 65 20 6c 65 74 74 65 72 20 73 68 6f 72 74 20 6f  e letter short o
0250: 70 74 69 6f 6e 20 74 68 61 74 20 63 61 6e 20 62  ption that can b
0260: 65 20 73 70 65 63 69 66 69 65 64 20 6f 6e 20 74  e specified on t
0270: 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20  he command line 
0280: 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 76 61  to change the va
0290: 6c 75 65 20 6f 66 20 74 68 65 20 76 61 72 69 61  lue of the varia
02a0: 62 6c 65 20 73 70 65 63 69 66 69 65 64 20 62 79  ble specified by
02b0: 20 74 68 65 0a 2e 49 52 20 64 61 74 61 0a 70 61   the..IR data.pa
02c0: 72 61 6d 65 74 65 72 2e 20 20 41 20 76 61 6c 75  rameter.  A valu
02d0: 65 20 6f 66 20 27 5c 30 27 20 63 61 6e 20 62 65  e of '\0' can be
02e0: 20 73 70 65 63 69 66 69 65 64 20 66 6f 72 20 6e   specified for n
02f0: 6f 20 73 68 6f 72 74 20 6f 70 74 69 6f 6e 2e 0a  o short option..
0300: 0a 54 68 65 0a 2e 49 52 20 74 79 70 65 20 0a 70  .The..IR type .p
0310: 61 72 61 6d 65 74 65 72 20 69 73 20 6f 66 20 74  arameter is of t
0320: 79 70 65 0a 2e 49 52 20 6c 63 5f 76 61 72 5f 74  ype..IR lc_var_t
0330: 79 70 65 5f 74 0a 77 68 69 63 68 20 73 70 65 63  ype_t.which spec
0340: 69 66 69 65 73 20 74 68 65 20 74 79 70 65 20 6f  ifies the type o
0350: 66 20 74 68 65 0a 2e 49 52 20 64 61 74 61 0a 70  f the..IR data.p
0360: 61 72 61 6d 65 74 65 72 2e 0a 56 61 6c 69 64 20  arameter..Valid 
0370: 76 61 6c 75 65 73 20 66 6f 72 0a 2e 49 52 20 74  values for..IR t
0380: 79 70 65 0a 61 72 65 3a 0a 2e 54 50 0a 4c 43 5f  ype.are:..TP.LC_
0390: 56 41 52 5f 53 54 52 49 4e 47 0a 46 6f 72 20 61  VAR_STRING.For a
03a0: 20 73 74 72 69 6e 67 20 74 79 70 65 20 76 61 72   string type var
03b0: 69 61 62 6c 65 2e 20 20 54 68 65 20 64 61 74 61  iable.  The data
03c0: 20 70 61 73 73 65 64 20 73 68 6f 75 6c 64 20 62   passed should b
03d0: 65 20 6f 66 20 74 79 70 65 20 22 63 68 61 72 20  e of type "char 
03e0: 2a 2a 22 2e 20 20 54 68 65 20 64 61 74 61 20 77  **".  The data w
03f0: 69 6c 6c 20 62 65 20 73 65 74 20 74 6f 20 61 20  ill be set to a 
0400: 72 65 67 69 6f 6e 20 6f 66 20 6d 65 6d 6f 72 79  region of memory
0410: 20 74 68 61 74 20 68 61 73 20 62 65 65 6e 20 61   that has been a
0420: 6c 6c 6f 63 61 74 65 64 20 77 69 74 68 20 6d 61  llocated with ma
0430: 6c 6c 6f 63 28 29 20 61 6e 64 20 63 61 6e 20 62  lloc() and can b
0440: 65 20 72 65 6c 65 61 73 65 64 20 62 65 20 66 72  e released be fr
0450: 65 65 28 29 27 64 2e 0a 2e 54 50 0a 4c 43 5f 56  ee()'d...TP.LC_V
0460: 41 52 5f 4c 4f 4e 47 5f 4c 4f 4e 47 0a 46 6f 72  AR_LONG_LONG.For
0470: 20 61 20 22 6c 6f 6e 67 20 6c 6f 6e 67 22 20 69   a "long long" i
0480: 6e 74 65 67 65 72 20 74 79 70 65 20 76 61 72 69  nteger type vari
0490: 61 62 6c 65 2e 20 20 54 68 65 20 64 61 74 61 20  able.  The data 
04a0: 70 61 73 73 65 64 20 73 68 6f 75 6c 64 20 62 65  passed should be
04b0: 20 6f 66 20 74 79 70 65 20 22 6c 6f 6e 67 20 6c   of type "long l
04c0: 6f 6e 67 20 2a 22 2e 0a 2e 54 50 0a 4c 43 5f 56  ong *"...TP.LC_V
04d0: 41 52 5f 4c 4f 4e 47 0a 46 6f 72 20 61 20 22 6c  AR_LONG.For a "l
04e0: 6f 6e 67 22 20 69 6e 74 65 67 65 72 20 74 79 70  ong" integer typ
04f0: 65 20 76 61 72 69 61 62 6c 65 2e 20 20 54 68 65  e variable.  The
0500: 20 64 61 74 61 20 70 61 73 73 65 64 20 73 68 6f   data passed sho
0510: 75 6c 64 20 62 65 20 6f 66 20 74 79 70 65 20 22  uld be of type "
0520: 6c 6f 6e 67 20 2a 22 2e 0a 2e 54 50 0a 4c 43 5f  long *"...TP.LC_
0530: 56 41 52 5f 49 4e 54 0a 46 6f 72 20 61 20 22 69  VAR_INT.For a "i
0540: 6e 74 22 20 69 6e 74 65 67 65 72 20 74 79 70 65  nt" integer type
0550: 20 76 61 72 69 61 62 6c 65 2e 20 20 54 68 65 20   variable.  The 
0560: 64 61 74 61 20 70 61 73 73 65 64 20 73 68 6f 75  data passed shou
0570: 6c 64 20 62 65 20 6f 66 20 74 79 70 65 20 22 69  ld be of type "i
0580: 6e 74 20 2a 22 2e 0a 2e 54 50 0a 4c 43 5f 56 41  nt *"...TP.LC_VA
0590: 52 5f 53 48 4f 52 54 0a 46 6f 72 20 61 20 22 73  R_SHORT.For a "s
05a0: 68 6f 72 74 22 20 69 6e 74 65 67 65 72 20 74 79  hort" integer ty
05b0: 70 65 20 76 61 72 69 61 62 6c 65 2e 20 20 54 68  pe variable.  Th
05c0: 65 20 64 61 74 61 20 70 61 73 73 65 64 20 73 68  e data passed sh
05d0: 6f 75 6c 64 20 62 65 20 6f 66 20 74 79 70 65 20  ould be of type 
05e0: 22 73 68 6f 72 74 20 2a 22 2e 0a 2e 54 50 0a 4c  "short *"...TP.L
05f0: 43 5f 56 41 52 5f 42 4f 4f 4c 0a 46 6f 72 20 61  C_VAR_BOOL.For a
0600: 20 62 6f 6f 6c 65 61 6e 20 74 79 70 65 20 76 61   boolean type va
0610: 72 69 61 62 6c 65 2e 20 20 54 68 65 20 64 61 74  riable.  The dat
0620: 61 20 70 61 73 73 65 64 20 73 68 6f 75 6c 64 20  a passed should 
0630: 62 65 20 6f 66 20 74 79 70 65 20 22 69 6e 74 20  be of type "int 
0640: 2a 22 2e 20 20 57 68 65 6e 20 61 20 74 72 75 65  *".  When a true
0650: 20 76 61 6c 75 65 20 69 73 20 73 70 65 63 69 66   value is specif
0660: 69 65 64 20 74 68 65 20 76 61 72 69 61 62 6c 65  ied the variable
0670: 20 69 73 20 73 65 74 20 74 6f 20 31 2e 20 20 57   is set to 1.  W
0680: 68 65 6e 20 61 20 66 61 6c 73 65 20 76 61 6c 75  hen a false valu
0690: 65 20 69 73 20 73 70 65 63 69 66 69 65 64 20 74  e is specified t
06a0: 68 65 20 76 61 72 69 61 62 6c 65 20 69 73 20 73  he variable is s
06b0: 65 74 20 74 6f 20 30 2e 20 20 41 6e 79 20 6f 74  et to 0.  Any ot
06c0: 68 65 72 20 76 61 6c 75 65 20 73 65 74 73 20 74  her value sets t
06d0: 68 65 20 76 61 72 69 61 62 6c 65 20 74 6f 20 2d  he variable to -
06e0: 31 2e 20 20 56 61 6c 69 64 20 74 72 75 65 20 76  1.  Valid true v
06f0: 61 6c 75 65 73 20 61 72 65 3a 20 65 6e 61 62 6c  alues are: enabl
0700: 65 2c 20 74 72 75 65 2c 20 79 65 73 2c 20 6f 6e  e, true, yes, on
0710: 2c 20 79 2c 20 61 6e 64 20 31 2e 20 20 56 61 6c  , y, and 1.  Val
0720: 69 64 20 66 61 6c 73 65 20 76 61 6c 75 65 73 20  id false values 
0730: 61 72 65 3a 20 64 69 73 61 62 6c 65 2c 20 66 61  are: disable, fa
0740: 6c 73 65 2c 20 6f 66 66 2c 20 6e 6f 2c 20 6e 2c  lse, off, no, n,
0750: 20 61 6e 64 20 30 2e 0a 2e 54 50 0a 4c 43 5f 56   and 0...TP.LC_V
0760: 41 52 5f 46 49 4c 45 4e 41 4d 45 0a 4e 6f 74 20  AR_FILENAME.Not 
0770: 69 6d 70 6c 65 6d 65 6e 74 65 64 2e 0a 2e 54 50  implemented...TP
0780: 0a 4c 43 5f 56 41 52 5f 44 49 52 45 43 54 4f 52  .LC_VAR_DIRECTOR
0790: 59 0a 4e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65  Y.Not implemente
07a0: 64 2e 0a 2e 54 50 0a 4c 43 5f 56 41 52 5f 53 49  d...TP.LC_VAR_SI
07b0: 5a 45 5f 4c 4f 4e 47 5f 4c 4f 4e 47 0a 46 6f 72  ZE_LONG_LONG.For
07c0: 20 61 20 22 6c 6f 6e 67 20 6c 6f 6e 67 22 20 69   a "long long" i
07d0: 6e 74 65 67 65 72 20 74 79 70 65 20 74 68 61 74  nteger type that
07e0: 20 63 61 6e 20 68 61 76 65 20 73 69 7a 65 20 6d   can have size m
07f0: 6f 64 69 66 69 65 72 73 2c 20 73 75 63 68 20 61  odifiers, such a
0800: 73 20 27 47 27 20 6f 72 20 67 69 67 61 62 79 74  s 'G' or gigabyt
0810: 65 73 2c 20 27 4d 27 20 66 6f 72 20 6d 65 67 61  es, 'M' for mega
0820: 62 79 74 65 73 2c 20 27 4b 27 20 66 6f 72 20 6b  bytes, 'K' for k
0830: 69 6c 6f 62 79 74 65 73 2e 20 20 54 68 65 20 64  ilobytes.  The d
0840: 61 74 61 20 70 61 73 73 65 64 20 73 68 6f 75 6c  ata passed shoul
0850: 64 20 62 65 20 6f 66 20 74 79 70 65 20 22 6c 6f  d be of type "lo
0860: 6e 67 20 6c 6f 6e 67 20 2a 22 2e 0a 2e 54 50 0a  ng long *"...TP.
0870: 4c 43 5f 56 41 52 5f 53 49 5a 45 5f 4c 4f 4e 47  LC_VAR_SIZE_LONG
0880: 0a 46 6f 72 20 61 20 22 6c 6f 6e 67 22 20 69 6e  .For a "long" in
0890: 74 65 67 65 72 20 74 79 70 65 20 74 68 61 74 20  teger type that 
08a0: 63 61 6e 20 68 61 76 65 20 73 69 7a 65 20 6d 6f  can have size mo
08b0: 64 69 66 69 65 72 73 2c 20 73 75 63 68 20 61 73  difiers, such as
08c0: 20 27 47 27 20 6f 72 20 67 69 67 61 62 79 74 65   'G' or gigabyte
08d0: 73 2c 20 27 4d 27 20 66 6f 72 20 6d 65 67 61 62  s, 'M' for megab
08e0: 79 74 65 73 2c 20 27 4b 27 20 66 6f 72 20 6b 69  ytes, 'K' for ki
08f0: 6c 6f 62 79 74 65 73 2e 20 20 54 68 65 20 64 61  lobytes.  The da
0900: 74 61 20 70 61 73 73 65 64 20 73 68 6f 75 6c 64  ta passed should
0910: 20 62 65 20 6f 66 20 74 79 70 65 20 22 6c 6f 6e   be of type "lon
0920: 67 20 2a 22 2e 0a 2e 54 50 0a 4c 43 5f 56 41 52  g *"...TP.LC_VAR
0930: 5f 53 49 5a 45 5f 49 4e 54 0a 46 6f 72 20 61 20  _SIZE_INT.For a 
0940: 22 69 6e 74 22 20 69 6e 74 65 67 65 72 20 74 79  "int" integer ty
0950: 70 65 20 74 68 61 74 20 63 61 6e 20 68 61 76 65  pe that can have
0960: 20 73 69 7a 65 20 6d 6f 64 69 66 69 65 72 73 2c   size modifiers,
0970: 20 73 75 63 68 20 61 73 20 27 47 27 20 6f 72 20   such as 'G' or 
0980: 67 69 67 61 62 79 74 65 73 2c 20 27 4d 27 20 66  gigabytes, 'M' f
0990: 6f 72 20 6d 65 67 61 62 79 74 65 73 2c 20 27 4b  or megabytes, 'K
09a0: 27 20 66 6f 72 20 6b 69 6c 6f 62 79 74 65 73 2e  ' for kilobytes.
09b0: 20 20 54 68 65 20 64 61 74 61 20 70 61 73 73 65    The data passe
09c0: 64 20 73 68 6f 75 6c 64 20 62 65 20 6f 66 20 74  d should be of t
09d0: 79 70 65 20 22 69 6e 74 20 2a 22 2e 0a 2e 54 50  ype "int *"...TP
09e0: 0a 4c 43 5f 56 41 52 5f 53 49 5a 45 5f 53 48 4f  .LC_VAR_SIZE_SHO
09f0: 52 54 0a 46 6f 72 20 61 20 22 73 68 6f 72 74 22  RT.For a "short"
0a00: 20 69 6e 74 65 67 65 72 20 74 79 70 65 20 74 68   integer type th
0a10: 61 74 20 63 61 6e 20 68 61 76 65 20 73 69 7a 65  at can have size
0a20: 20 6d 6f 64 69 66 69 65 72 73 2c 20 73 75 63 68   modifiers, such
0a30: 20 61 73 20 27 47 27 20 6f 72 20 67 69 67 61 62   as 'G' or gigab
0a40: 79 74 65 73 2c 20 27 4d 27 20 66 6f 72 20 6d 65  ytes, 'M' for me
0a50: 67 61 62 79 74 65 73 2c 20 27 4b 27 20 66 6f 72  gabytes, 'K' for
0a60: 20 6b 69 6c 6f 62 79 74 65 73 2e 20 20 54 68 65   kilobytes.  The
0a70: 20 64 61 74 61 20 70 61 73 73 65 64 20 73 68 6f   data passed sho
0a80: 75 6c 64 20 62 65 20 6f 66 20 74 79 70 65 20 22  uld be of type "
0a90: 73 68 6f 72 74 20 2a 22 2e 0a 2e 54 50 0a 4c 43  short *"...TP.LC
0aa0: 5f 56 41 52 5f 54 49 4d 45 0a 4e 6f 74 20 69 6d  _VAR_TIME.Not im
0ab0: 70 6c 65 6d 65 6e 74 65 64 2e 0a 2e 54 50 0a 4c  plemented...TP.L
0ac0: 43 5f 56 41 52 5f 44 41 54 45 0a 4e 6f 74 20 69  C_VAR_DATE.Not i
0ad0: 6d 70 6c 65 6d 65 6e 74 65 64 2e 0a 2e 54 50 0a  mplemented...TP.
0ae0: 4c 43 5f 56 41 52 5f 42 4f 4f 4c 5f 42 59 5f 45  LC_VAR_BOOL_BY_E
0af0: 58 49 53 54 41 4e 43 45 0a 54 68 69 73 20 74 79  XISTANCE.This ty
0b00: 70 65 20 6f 66 20 76 61 72 69 61 62 6c 65 20 74  pe of variable t
0b10: 61 6b 65 73 20 6e 6f 20 61 72 67 75 6d 65 6e 74  akes no argument
0b20: 73 2c 20 69 74 20 69 73 20 73 65 74 20 74 6f 20  s, it is set to 
0b30: 74 72 75 65 20 28 31 29 20 62 79 20 69 74 73 20  true (1) by its 
0b40: 65 78 69 73 74 61 6e 63 65 20 69 6e 20 61 20 63  existance in a c
0b50: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
0b60: 65 2c 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  e, environment v
0b70: 61 72 69 61 62 6c 65 2c 20 6f 72 20 6f 6e 20 74  ariable, or on t
0b80: 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e  he command line.
0b90: 20 20 49 66 20 69 74 20 69 73 20 6e 6f 74 20 73    If it is not s
0ba0: 70 65 63 69 66 69 65 64 2c 20 74 68 65 20 76 61  pecified, the va
0bb0: 6c 75 65 20 6f 66 20 74 68 65 20 64 61 74 61 20  lue of the data 
0bc0: 70 61 73 73 65 64 20 69 73 20 6e 6f 74 20 63 68  passed is not ch
0bd0: 61 6e 67 65 64 2e 20 20 54 68 65 20 64 61 74 61  anged.  The data
0be0: 20 70 61 73 73 65 64 20 73 68 6f 75 6c 64 20 62   passed should b
0bf0: 65 20 6f 66 20 74 79 70 65 20 22 69 6e 74 20 2a  e of type "int *
0c00: 22 2e 0a 0a 2e 53 48 20 22 52 45 54 55 52 4e 20  "....SH "RETURN 
0c10: 56 41 4c 55 45 22 0a 4f 6e 20 73 75 63 63 65 73  VALUE".On succes
0c20: 73 20 30 20 69 73 20 72 65 74 75 72 6e 65 64 2c  s 0 is returned,
0c30: 20 6f 74 68 65 72 77 69 73 65 20 2d 31 20 69 73   otherwise -1 is
0c40: 20 72 65 74 75 72 6e 65 64 2e 0a 0a 2e 53 48 20   returned....SH 
0c50: 45 58 41 4d 50 4c 45 0a 2e 6e 66 0a 23 69 6e 63  EXAMPLE..nf.#inc
0c60: 6c 75 64 65 20 3c 6c 69 62 63 6f 6e 66 69 67 2e  lude <libconfig.
0c70: 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64  h>.#include <std
0c80: 6c 69 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20  lib.h>.#include 
0c90: 3c 73 74 64 69 6f 2e 68 3e 0a 0a 69 6e 74 20 6d  <stdio.h>..int m
0ca0: 61 69 6e 28 69 6e 74 20 61 72 67 63 2c 20 63 68  ain(int argc, ch
0cb0: 61 72 20 2a 2a 61 72 67 76 29 20 7b 0a 09 69 6e  ar **argv) {..in
0cc0: 74 20 6c 63 5f 70 5f 72 65 74 2c 20 6c 63 5f 72  t lc_p_ret, lc_r
0cd0: 76 5f 72 65 74 3b 0a 09 63 68 61 72 20 2a 66 69  v_ret;..char *fi
0ce0: 6c 65 6e 61 6d 65 20 3d 20 4e 55 4c 4c 3b 0a 09  lename = NULL;..
0cf0: 6c 6f 6e 67 20 69 6e 74 20 63 6f 75 6e 74 65 72  long int counter
0d00: 20 3d 20 2d 31 3b 0a 0a 09 6c 63 5f 72 76 5f 72   = -1;...lc_rv_r
0d10: 65 74 20 3d 20 6c 63 5f 72 65 67 69 73 74 65 72  et = lc_register
0d20: 5f 76 61 72 28 22 42 65 67 69 6e 22 2c 20 4c 43  _var("Begin", LC
0d30: 5f 56 41 52 5f 4c 4f 4e 47 2c 0a 09 20 20 20 20  _VAR_LONG,..    
0d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0d50: 20 20 20 20 20 20 20 20 26 63 6f 75 6e 74 65 72          &counter
0d60: 2c 20 27 63 27 29 3b 0a 09 69 66 20 28 6c 63 5f  , 'c');..if (lc_
0d70: 72 76 5f 72 65 74 20 21 3d 20 30 29 20 7b 0a 09  rv_ret != 0) {..
0d80: 09 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c  .fprintf(stderr,
0d90: 20 22 45 72 72 6f 72 20 72 65 67 69 73 74 65 72   "Error register
0da0: 69 6e 67 20 76 61 72 69 61 62 6c 65 3a 20 25 69  ing variable: %i
0db0: 2e 5c 5c 6e 22 2c 0a 09 09 20 20 20 20 20 20 20  .\\n",...       
0dc0: 20 6c 63 5f 67 65 74 65 72 72 6e 6f 28 29 29 3b   lc_geterrno());
0dd0: 0a 09 09 72 65 74 75 72 6e 28 45 58 49 54 5f 46  ...return(EXIT_F
0de0: 41 49 4c 55 52 45 29 3b 0a 09 7d 0a 0a 09 6c 63  AILURE);..}...lc
0df0: 5f 72 76 5f 72 65 74 20 3d 20 6c 63 5f 72 65 67  _rv_ret = lc_reg
0e00: 69 73 74 65 72 5f 76 61 72 28 22 46 69 6c 65 22  ister_var("File"
0e10: 2c 20 4c 43 5f 56 41 52 5f 53 54 52 49 4e 47 2c  , LC_VAR_STRING,
0e20: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
0e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 66                &f
0e40: 69 6c 65 6e 61 6d 65 2c 20 27 66 27 29 3b 0a 09  ilename, 'f');..
0e50: 69 66 20 28 6c 63 5f 72 76 5f 72 65 74 20 21 3d  if (lc_rv_ret !=
0e60: 20 30 29 20 7b 0a 09 09 66 70 72 69 6e 74 66 28   0) {...fprintf(
0e70: 73 74 64 65 72 72 2c 20 22 45 72 72 6f 72 20 72  stderr, "Error r
0e80: 65 67 69 73 74 65 72 69 6e 67 20 76 61 72 69 61  egistering varia
0e90: 62 6c 65 3a 20 25 69 2e 5c 5c 6e 22 2c 0a 09 09  ble: %i.\\n",...
0ea0: 20 20 20 20 20 20 20 20 6c 63 5f 67 65 74 65 72          lc_geter
0eb0: 72 6e 6f 28 29 29 3b 0a 09 09 72 65 74 75 72 6e  rno());...return
0ec0: 28 45 58 49 54 5f 46 41 49 4c 55 52 45 29 3b 0a  (EXIT_FAILURE);.
0ed0: 09 7d 0a 0a 09 6c 63 5f 70 5f 72 65 74 20 3d 20  .}...lc_p_ret = 
0ee0: 6c 63 5f 70 72 6f 63 65 73 73 28 61 72 67 63 2c  lc_process(argc,
0ef0: 20 61 72 67 76 2c 20 22 65 78 61 6d 70 6c 65 22   argv, "example"
0f00: 2c 20 4c 43 5f 43 4f 4e 46 5f 41 50 41 43 48 45  , LC_CONF_APACHE
0f10: 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
0f20: 20 20 20 20 20 20 20 20 20 4e 55 4c 4c 29 3b 0a           NULL);.
0f30: 09 69 66 20 28 6c 63 5f 70 5f 72 65 74 20 21 3d  .if (lc_p_ret !=
0f40: 20 30 29 20 7b 0a 09 09 66 70 72 69 6e 74 66 28   0) {...fprintf(
0f50: 73 74 64 65 72 72 2c 20 22 45 72 72 6f 72 20 70  stderr, "Error p
0f60: 72 6f 63 65 73 73 69 6e 67 20 63 6f 6e 66 69 67  rocessing config
0f70: 75 72 61 74 69 6f 6e 3a 20 5c 5c 0a 09 09 20 20  uration: \\...  
0f80: 20 20 20 20 20 20 25 73 5c 5c 6e 22 2c 20 6c 63        %s\\n", lc
0f90: 5f 67 65 74 65 72 72 73 74 72 28 29 29 3b 0a 09  _geterrstr());..
0fa0: 09 72 65 74 75 72 6e 28 45 58 49 54 5f 46 41 49  .return(EXIT_FAI
0fb0: 4c 55 52 45 29 3b 0a 09 7d 0a 0a 09 69 66 20 28  LURE);..}...if (
0fc0: 66 69 6c 65 6e 61 6d 65 20 21 3d 20 4e 55 4c 4c  filename != NULL
0fd0: 29 20 7b 0a 09 09 70 72 69 6e 74 66 28 22 46 69  ) {...printf("Fi
0fe0: 6c 65 20 73 70 65 63 69 66 69 65 64 20 77 61 73  le specified was
0ff0: 3a 20 25 73 5c 5c 6e 22 2c 20 66 69 6c 65 6e 61  : %s\\n", filena
1000: 6d 65 29 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09  me);..} else {..
1010: 09 70 72 69 6e 74 66 28 22 4e 6f 20 66 69 6c 65  .printf("No file
1020: 6e 61 6d 65 20 73 70 65 63 69 66 69 65 64 2e 5c  name specified.\
1030: 5c 6e 22 29 3b 0a 09 7d 0a 0a 09 69 66 20 28 63  \n");..}...if (c
1040: 6f 75 6e 74 65 72 20 21 3d 20 2d 31 29 20 7b 0a  ounter != -1) {.
1050: 09 09 70 72 69 6e 74 66 28 22 43 6f 75 6e 74 65  ..printf("Counte
1060: 72 20 77 61 73 20 73 70 65 63 69 66 69 65 64 20  r was specified 
1070: 61 73 3a 20 25 6c 64 5c 5c 6e 22 2c 20 63 6f 75  as: %ld\\n", cou
1080: 6e 74 65 72 29 3b 0a 09 7d 20 65 6c 73 65 20 7b  nter);..} else {
1090: 0a 09 09 70 72 69 6e 74 66 28 22 43 6f 75 6e 74  ...printf("Count
10a0: 65 72 20 77 61 73 20 6e 6f 74 20 73 70 65 63 69  er was not speci
10b0: 66 69 65 64 2e 5c 5c 6e 22 29 3b 0a 09 7d 0a 0a  fied.\\n");..}..
10c0: 09 72 65 74 75 72 6e 28 45 58 49 54 5f 53 55 43  .return(EXIT_SUC
10d0: 43 45 53 53 29 3b 0a 7d 0a 2e 66 69 0a 0a 2e 53  CESS);.}..fi...S
10e0: 48 20 22 53 45 45 20 41 4c 53 4f 22 0a 2e 42 52  H "SEE ALSO"..BR
10f0: 20 6c 63 5f 72 65 67 69 73 74 65 72 5f 63 61 6c   lc_register_cal
1100: 6c 62 61 63 6b 20 28 33 29 2c 0a 2e 42 52 20 6c  lback (3),..BR l
1110: 63 5f 67 65 74 65 72 72 6e 6f 20 28 33 29 2c 0a  c_geterrno (3),.
1120: 2e 42 52 20 6c 63 5f 67 65 74 65 72 72 73 74 72  .BR lc_geterrstr
1130: 20 28 33 29 2c 0a 2e 42 52 20 6c 63 5f 70 72 6f   (3),..BR lc_pro
1140: 63 65 73 73 20 28 33 29 0a                       cess (3).