Hex Artifact Content

Artifact ae325a3444eb30611376b702db9dc639b867a920:


0000: 23 69 6e 63 6c 75 64 65 20 22 63 6f 6d 70 61 74  #include "compat
0010: 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 6c 69  .h".#include "li
0020: 62 63 6f 6e 66 69 67 2e 68 22 0a 0a 69 6e 74 20  bconfig.h"..int 
0030: 68 65 6c 70 5f 63 6d 64 28 63 6f 6e 73 74 20 63  help_cmd(const c
0040: 68 61 72 20 2a 70 61 72 74 61 72 67 2c 20 63 6f  har *partarg, co
0050: 6e 73 74 20 63 68 61 72 20 2a 61 72 67 2c 20 63  nst char *arg, c
0060: 6f 6e 73 74 20 63 68 61 72 20 2a 61 72 67 61 72  onst char *argar
0070: 67 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 76  g, const char *v
0080: 61 6c 2c 20 6c 63 5f 66 6c 61 67 73 5f 74 20 66  al, lc_flags_t f
0090: 6c 61 67 73 2c 20 76 6f 69 64 20 2a 65 78 74 72  lags, void *extr
00a0: 61 29 20 7b 0a 09 70 72 69 6e 74 66 28 22 55 73  a) {..printf("Us
00b0: 61 67 65 20 69 6e 66 6f 20 67 6f 65 73 20 68 65  age info goes he
00c0: 72 65 5c 6e 22 29 3b 0a 09 70 72 69 6e 74 66 28  re\n");..printf(
00d0: 22 5c 6e 22 29 3b 0a 0a 09 65 78 69 74 28 45 58  "\n");...exit(EX
00e0: 49 54 5f 46 41 49 4c 55 52 45 29 3b 0a 7d 0a 69  IT_FAILURE);.}.i
00f0: 6e 74 20 73 61 6c 6c 79 5f 63 6d 64 28 63 6f 6e  nt sally_cmd(con
0100: 73 74 20 63 68 61 72 20 2a 70 61 72 74 61 72 67  st char *partarg
0110: 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 61 72  , const char *ar
0120: 67 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 61  g, const char *a
0130: 72 67 61 72 67 2c 20 63 6f 6e 73 74 20 63 68 61  rgarg, const cha
0140: 72 20 2a 76 61 6c 2c 20 6c 63 5f 66 6c 61 67 73  r *val, lc_flags
0150: 5f 74 20 66 6c 61 67 73 2c 20 76 6f 69 64 20 2a  _t flags, void *
0160: 65 78 74 72 61 29 20 7b 0a 09 66 70 72 69 6e 74  extra) {..fprint
0170: 66 28 73 74 64 65 72 72 2c 20 22 25 73 20 73 65  f(stderr, "%s se
0180: 74 73 20 76 61 6c 75 65 3a 20 5c 22 25 73 5c 22  ts value: \"%s\"
0190: 20 28 66 6c 61 67 73 3d 25 69 29 5c 6e 22 2c 20   (flags=%i)\n", 
01a0: 61 72 67 2c 20 76 61 6c 2c 20 66 6c 61 67 73 29  arg, val, flags)
01b0: 3b 0a 09 72 65 74 75 72 6e 28 30 29 3b 0a 7d 0a  ;..return(0);.}.
01c0: 0a 69 6e 74 20 63 6d 64 5f 69 66 6d 6f 64 75 6c  .int cmd_ifmodul
01d0: 65 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 61  e(const char *pa
01e0: 72 74 61 72 67 2c 20 63 6f 6e 73 74 20 63 68 61  rtarg, const cha
01f0: 72 20 2a 61 72 67 2c 20 63 6f 6e 73 74 20 63 68  r *arg, const ch
0200: 61 72 20 2a 61 72 67 61 72 67 2c 20 63 6f 6e 73  ar *argarg, cons
0210: 74 20 63 68 61 72 20 2a 76 61 6c 2c 20 6c 63 5f  t char *val, lc_
0220: 66 6c 61 67 73 5f 74 20 66 6c 61 67 73 2c 20 76  flags_t flags, v
0230: 6f 69 64 20 2a 65 78 74 72 61 29 20 7b 0a 09 69  oid *extra) {..i
0240: 66 20 28 66 6c 61 67 73 20 3d 3d 20 4c 43 5f 46  f (flags == LC_F
0250: 4c 41 47 53 5f 53 45 43 54 49 4f 4e 45 4e 44 29  LAGS_SECTIONEND)
0260: 20 7b 0a 09 09 72 65 74 75 72 6e 28 4c 43 5f 43   {...return(LC_C
0270: 42 52 45 54 5f 4f 4b 41 59 29 3b 0a 09 7d 0a 09  BRET_OKAY);..}..
0280: 69 66 20 28 66 6c 61 67 73 20 21 3d 20 4c 43 5f  if (flags != LC_
0290: 46 4c 41 47 53 5f 53 45 43 54 49 4f 4e 53 54 41  FLAGS_SECTIONSTA
02a0: 52 54 29 20 7b 0a 09 09 66 70 72 69 6e 74 66 28  RT) {...fprintf(
02b0: 73 74 64 65 72 72 2c 20 22 49 66 4d 6f 64 75 6c  stderr, "IfModul
02c0: 65 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 75 73  e can only be us
02d0: 65 64 20 61 73 20 61 20 73 65 63 74 69 6f 6e 2e  ed as a section.
02e0: 5c 6e 22 29 3b 0a 09 09 72 65 74 75 72 6e 28 4c  \n");...return(L
02f0: 43 5f 43 42 52 45 54 5f 45 52 52 4f 52 29 3b 0a  C_CBRET_ERROR);.
0300: 09 7d 0a 09 69 66 20 28 61 72 67 61 72 67 20 3d  .}..if (argarg =
0310: 3d 20 4e 55 4c 4c 29 20 7b 0a 09 09 66 70 72 69  = NULL) {...fpri
0320: 6e 74 66 28 73 74 64 65 72 72 2c 20 22 59 6f 75  ntf(stderr, "You
0330: 20 6d 75 73 74 20 73 70 65 63 69 66 79 20 61 6e   must specify an
0340: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 49 66 4d   argument to IfM
0350: 6f 64 75 6c 65 2e 5c 6e 22 29 3b 0a 09 09 72 65  odule.\n");...re
0360: 74 75 72 6e 28 4c 43 5f 43 42 52 45 54 5f 45 52  turn(LC_CBRET_ER
0370: 52 4f 52 29 3b 0a 09 7d 0a 0a 09 66 70 72 69 6e  ROR);..}...fprin
0380: 74 66 28 73 74 64 65 72 72 2c 20 22 49 66 4d 6f  tf(stderr, "IfMo
0390: 64 75 6c 65 20 28 25 73 29 5c 6e 22 2c 20 61 72  dule (%s)\n", ar
03a0: 67 61 72 67 29 3b 0a 09 72 65 74 75 72 6e 28 4c  garg);..return(L
03b0: 43 5f 43 42 52 45 54 5f 49 47 4e 4f 52 45 53 45  C_CBRET_IGNORESE
03c0: 43 54 49 4f 4e 29 3b 0a 7d 0a 0a 69 6e 74 20 6d  CTION);.}..int m
03d0: 61 69 6e 28 69 6e 74 20 61 72 67 63 2c 20 63 68  ain(int argc, ch
03e0: 61 72 20 2a 2a 61 72 67 76 29 20 7b 0a 09 63 68  ar **argv) {..ch
03f0: 61 72 20 2a 6a 6f 65 76 61 6c 20 3d 20 4e 55 4c  ar *joeval = NUL
0400: 4c 3b 0a 09 73 69 7a 65 5f 74 20 78 76 61 6c 20  L;..size_t xval 
0410: 3d 20 2d 31 3b 0a 09 69 6e 74 20 6f 6e 6f 66 66  = -1;..int onoff
0420: 20 3d 20 2d 31 3b 0a 09 69 6e 74 20 6c 63 70 72   = -1;..int lcpr
0430: 65 74 20 3d 20 2d 31 3b 0a 09 69 6e 74 20 69 20  et = -1;..int i 
0440: 3d 20 30 3b 0a 09 69 6e 74 20 6f 6e 6f 66 66 32  = 0;..int onoff2
0450: 20 3d 20 30 3b 0a 09 75 69 6e 74 33 32 5f 74 20   = 0;..uint32_t 
0460: 69 70 61 64 64 72 20 3d 20 30 3b 0a 0a 09 6c 63  ipaddr = 0;...lc
0470: 5f 72 65 67 69 73 74 65 72 5f 76 61 72 28 22 53  _register_var("S
0480: 65 63 74 69 6f 6e 22 2c 20 4c 43 5f 56 41 52 5f  ection", LC_VAR_
0490: 53 45 43 54 49 4f 4e 2c 20 4e 55 4c 4c 2c 20 30  SECTION, NULL, 0
04a0: 29 3b 0a 09 6c 63 5f 72 65 67 69 73 74 65 72 5f  );..lc_register_
04b0: 76 61 72 28 22 53 6f 6d 65 73 65 63 74 69 6f 6e  var("Somesection
04c0: 22 2c 20 4c 43 5f 56 41 52 5f 53 45 43 54 49 4f  ", LC_VAR_SECTIO
04d0: 4e 2c 20 4e 55 4c 4c 2c 20 30 29 3b 0a 09 6c 63  N, NULL, 0);..lc
04e0: 5f 72 65 67 69 73 74 65 72 5f 76 61 72 28 22 53  _register_var("S
04f0: 65 63 74 69 6f 6e 2e 54 65 73 74 22 2c 20 4c 43  ection.Test", LC
0500: 5f 56 41 52 5f 53 54 52 49 4e 47 2c 20 26 6a 6f  _VAR_STRING, &jo
0510: 65 76 61 6c 2c 20 27 6a 27 29 3b 0a 09 6c 63 5f  eval, 'j');..lc_
0520: 72 65 67 69 73 74 65 72 5f 76 61 72 28 22 62 6f  register_var("bo
0530: 62 22 2c 20 4c 43 5f 56 41 52 5f 53 49 5a 45 5f  b", LC_VAR_SIZE_
0540: 53 49 5a 45 5f 54 2c 20 26 78 76 61 6c 2c 20 27  SIZE_T, &xval, '
0550: 73 27 29 3b 0a 09 6c 63 5f 72 65 67 69 73 74 65  s');..lc_registe
0560: 72 5f 76 61 72 28 22 53 6f 6d 65 73 65 63 74 69  r_var("Somesecti
0570: 6f 6e 2e 46 72 65 65 22 2c 20 4c 43 5f 56 41 52  on.Free", LC_VAR
0580: 5f 42 4f 4f 4c 2c 20 26 6f 6e 6f 66 66 2c 20 30  _BOOL, &onoff, 0
0590: 29 3b 0a 09 6c 63 5f 72 65 67 69 73 74 65 72 5f  );..lc_register_
05a0: 76 61 72 28 22 6c 6f 6e 67 22 2c 20 4c 43 5f 56  var("long", LC_V
05b0: 41 52 5f 42 4f 4f 4c 5f 42 59 5f 45 58 49 53 54  AR_BOOL_BY_EXIST
05c0: 41 4e 43 45 2c 20 26 6f 6e 6f 66 66 32 2c 20 27  ANCE, &onoff2, '
05d0: 6c 27 29 3b 0a 09 6c 63 5f 72 65 67 69 73 74 65  l');..lc_registe
05e0: 72 5f 76 61 72 28 22 69 70 61 64 64 72 22 2c 20  r_var("ipaddr", 
05f0: 4c 43 5f 56 41 52 5f 49 50 2c 20 26 69 70 61 64  LC_VAR_IP, &ipad
0600: 64 72 2c 20 27 69 27 29 3b 0a 09 6c 63 5f 72 65  dr, 'i');..lc_re
0610: 67 69 73 74 65 72 5f 63 61 6c 6c 62 61 63 6b 28  gister_callback(
0620: 22 73 61 6c 6c 79 22 2c 20 30 2c 20 4c 43 5f 56  "sally", 0, LC_V
0630: 41 52 5f 53 54 52 49 4e 47 2c 20 73 61 6c 6c 79  AR_STRING, sally
0640: 5f 63 6d 64 2c 20 4e 55 4c 4c 29 3b 0a 09 6c 63  _cmd, NULL);..lc
0650: 5f 72 65 67 69 73 74 65 72 5f 63 61 6c 6c 62 61  _register_callba
0660: 63 6b 28 22 48 45 4c 50 22 2c 20 27 68 27 2c 20  ck("HELP", 'h', 
0670: 4c 43 5f 56 41 52 5f 4e 4f 4e 45 2c 20 68 65 6c  LC_VAR_NONE, hel
0680: 70 5f 63 6d 64 2c 20 4e 55 4c 4c 29 3b 0a 09 6c  p_cmd, NULL);..l
0690: 63 5f 72 65 67 69 73 74 65 72 5f 63 61 6c 6c 62  c_register_callb
06a0: 61 63 6b 28 22 2a 2e 69 66 6d 6f 64 75 6c 65 22  ack("*.ifmodule"
06b0: 2c 20 30 2c 20 4c 43 5f 56 41 52 5f 4e 4f 4e 45  , 0, LC_VAR_NONE
06c0: 2c 20 63 6d 64 5f 69 66 6d 6f 64 75 6c 65 2c 20  , cmd_ifmodule, 
06d0: 4e 55 4c 4c 29 3b 0a 09 6c 63 70 72 65 74 20 3d  NULL);..lcpret =
06e0: 20 6c 63 5f 70 72 6f 63 65 73 73 5f 66 69 6c 65   lc_process_file
06f0: 28 22 74 65 73 74 61 70 70 22 2c 20 22 62 75 69  ("testapp", "bui
0700: 6c 64 2f 74 65 73 74 2e 63 6f 6e 66 22 2c 20 4c  ld/test.conf", L
0710: 43 5f 43 4f 4e 46 5f 41 50 41 43 48 45 29 3b 0a  C_CONF_APACHE);.
0720: 09 69 66 20 28 6c 63 70 72 65 74 20 3c 20 30 29  .if (lcpret < 0)
0730: 20 7b 0a 09 09 66 70 72 69 6e 74 66 28 73 74 64   {...fprintf(std
0740: 65 72 72 2c 20 22 45 72 72 6f 72 20 70 72 6f 63  err, "Error proc
0750: 65 73 73 69 6e 67 20 63 6f 6e 66 69 67 20 66 69  essing config fi
0760: 6c 65 3a 20 25 73 5c 6e 22 2c 20 6c 63 5f 67 65  le: %s\n", lc_ge
0770: 74 65 72 72 73 74 72 28 29 29 3b 0a 09 09 72 65  terrstr());...re
0780: 74 75 72 6e 28 45 58 49 54 5f 46 41 49 4c 55 52  turn(EXIT_FAILUR
0790: 45 29 3b 0a 09 7d 0a 0a 09 6c 63 70 72 65 74 20  E);..}...lcpret 
07a0: 3d 20 6c 63 5f 70 72 6f 63 65 73 73 28 61 72 67  = lc_process(arg
07b0: 63 2c 20 61 72 67 76 2c 20 22 74 65 73 74 61 70  c, argv, "testap
07c0: 70 22 2c 20 4c 43 5f 43 4f 4e 46 5f 41 50 41 43  p", LC_CONF_APAC
07d0: 48 45 2c 20 22 74 65 73 74 2e 63 66 67 22 29 3b  HE, "test.cfg");
07e0: 0a 09 69 66 20 28 6c 63 70 72 65 74 20 3c 20 30  ..if (lcpret < 0
07f0: 29 20 7b 0a 09 09 66 70 72 69 6e 74 66 28 73 74  ) {...fprintf(st
0800: 64 65 72 72 2c 20 22 45 72 72 6f 72 20 70 72 6f  derr, "Error pro
0810: 63 65 73 73 69 6e 67 20 63 6f 6e 66 69 67 20 66  cessing config f
0820: 69 6c 65 3a 20 25 73 5c 6e 22 2c 20 6c 63 5f 67  ile: %s\n", lc_g
0830: 65 74 65 72 72 73 74 72 28 29 29 3b 0a 09 09 72  eterrstr());...r
0840: 65 74 75 72 6e 28 45 58 49 54 5f 46 41 49 4c 55  eturn(EXIT_FAILU
0850: 52 45 29 3b 0a 09 7d 0a 0a 09 6c 63 5f 63 6c 65  RE);..}...lc_cle
0860: 61 6e 75 70 28 29 3b 0a 0a 09 69 66 20 28 6a 6f  anup();...if (jo
0870: 65 76 61 6c 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a  eval != NULL) {.
0880: 09 09 66 70 72 69 6e 74 66 28 73 74 64 65 72 72  ..fprintf(stderr
0890: 2c 20 22 6a 6f 65 76 61 6c 20 3d 20 5c 22 25 73  , "joeval = \"%s
08a0: 5c 22 5c 6e 22 2c 20 6a 6f 65 76 61 6c 29 3b 0a  \"\n", joeval);.
08b0: 09 7d 20 65 6c 73 65 20 7b 0a 09 09 66 70 72 69  .} else {...fpri
08c0: 6e 74 66 28 73 74 64 65 72 72 2c 20 22 6a 6f 65  ntf(stderr, "joe
08d0: 76 61 6c 20 3d 20 5c 22 28 6e 75 6c 6c 29 5c 22  val = \"(null)\"
08e0: 5c 6e 22 29 3b 0a 09 7d 0a 09 66 70 72 69 6e 74  \n");..}..fprint
08f0: 66 28 73 74 64 65 72 72 2c 20 22 78 76 61 6c 20  f(stderr, "xval 
0900: 3d 20 25 6c 6c 75 5c 6e 22 2c 20 28 75 6e 73 69  = %llu\n", (unsi
0910: 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e 67 29 20  gned long long) 
0920: 78 76 61 6c 29 3b 0a 09 66 70 72 69 6e 74 66 28  xval);..fprintf(
0930: 73 74 64 65 72 72 2c 20 22 6f 6e 6f 66 66 20 3d  stderr, "onoff =
0940: 20 25 69 5c 6e 22 2c 20 6f 6e 6f 66 66 29 3b 0a   %i\n", onoff);.
0950: 09 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c  .fprintf(stderr,
0960: 20 22 6c 6f 6e 67 20 3d 20 25 69 5c 6e 22 2c 20   "long = %i\n", 
0970: 6f 6e 6f 66 66 32 29 3b 0a 09 66 70 72 69 6e 74  onoff2);..fprint
0980: 66 28 73 74 64 65 72 72 2c 20 22 69 70 20 3d 20  f(stderr, "ip = 
0990: 25 30 38 6c 78 5c 6e 22 2c 20 28 75 6e 73 69 67  %08lx\n", (unsig
09a0: 6e 65 64 20 6c 6f 6e 67 29 20 69 70 61 64 64 72  ned long) ipaddr
09b0: 29 3b 0a 09 66 6f 72 20 28 69 20 3d 20 6c 63 5f  );..for (i = lc_
09c0: 6f 70 74 69 6e 64 3b 20 69 20 3c 20 61 72 67 63  optind; i < argc
09d0: 3b 20 69 2b 2b 29 20 7b 0a 09 09 66 70 72 69 6e  ; i++) {...fprin
09e0: 74 66 28 73 74 64 65 72 72 2c 20 22 61 72 67 76  tf(stderr, "argv
09f0: 5b 25 69 5d 20 3d 20 5c 22 25 73 5c 22 5c 6e 22  [%i] = \"%s\"\n"
0a00: 2c 20 69 2c 20 61 72 67 76 5b 69 5d 29 3b 0a 09  , i, argv[i]);..
0a10: 7d 0a 0a 09 72 65 74 75 72 6e 28 30 29 3b 0a 7d  }...return(0);.}
0a20: 0a                                               .