Hex Artifact Content

Artifact 5bdc823df0696157b709a777af04802d863564c8:


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 3b 0a 0a 09 6c 63 5f 72 65 67  ipaddr;...lc_reg
0470: 69 73 74 65 72 5f 76 61 72 28 22 53 65 63 74 69  ister_var("Secti
0480: 6f 6e 22 2c 20 4c 43 5f 56 41 52 5f 53 45 43 54  on", LC_VAR_SECT
0490: 49 4f 4e 2c 20 4e 55 4c 4c 2c 20 30 29 3b 0a 09  ION, NULL, 0);..
04a0: 6c 63 5f 72 65 67 69 73 74 65 72 5f 76 61 72 28  lc_register_var(
04b0: 22 53 6f 6d 65 73 65 63 74 69 6f 6e 22 2c 20 4c  "Somesection", L
04c0: 43 5f 56 41 52 5f 53 45 43 54 49 4f 4e 2c 20 4e  C_VAR_SECTION, N
04d0: 55 4c 4c 2c 20 30 29 3b 0a 09 6c 63 5f 72 65 67  ULL, 0);..lc_reg
04e0: 69 73 74 65 72 5f 76 61 72 28 22 53 65 63 74 69  ister_var("Secti
04f0: 6f 6e 2e 54 65 73 74 22 2c 20 4c 43 5f 56 41 52  on.Test", LC_VAR
0500: 5f 53 54 52 49 4e 47 2c 20 26 6a 6f 65 76 61 6c  _STRING, &joeval
0510: 2c 20 27 6a 27 29 3b 0a 09 6c 63 5f 72 65 67 69  , 'j');..lc_regi
0520: 73 74 65 72 5f 76 61 72 28 22 62 6f 62 22 2c 20  ster_var("bob", 
0530: 4c 43 5f 56 41 52 5f 53 49 5a 45 5f 53 49 5a 45  LC_VAR_SIZE_SIZE
0540: 5f 54 2c 20 26 78 76 61 6c 2c 20 27 73 27 29 3b  _T, &xval, 's');
0550: 0a 09 6c 63 5f 72 65 67 69 73 74 65 72 5f 76 61  ..lc_register_va
0560: 72 28 22 53 6f 6d 65 73 65 63 74 69 6f 6e 2e 46  r("Somesection.F
0570: 72 65 65 22 2c 20 4c 43 5f 56 41 52 5f 42 4f 4f  ree", LC_VAR_BOO
0580: 4c 2c 20 26 6f 6e 6f 66 66 2c 20 30 29 3b 0a 09  L, &onoff, 0);..
0590: 6c 63 5f 72 65 67 69 73 74 65 72 5f 76 61 72 28  lc_register_var(
05a0: 22 6c 6f 6e 67 22 2c 20 4c 43 5f 56 41 52 5f 42  "long", LC_VAR_B
05b0: 4f 4f 4c 5f 42 59 5f 45 58 49 53 54 41 4e 43 45  OOL_BY_EXISTANCE
05c0: 2c 20 26 6f 6e 6f 66 66 32 2c 20 27 6c 27 29 3b  , &onoff2, 'l');
05d0: 0a 09 6c 63 5f 72 65 67 69 73 74 65 72 5f 76 61  ..lc_register_va
05e0: 72 28 22 69 70 61 64 64 72 22 2c 20 4c 43 5f 56  r("ipaddr", LC_V
05f0: 41 52 5f 49 50 2c 20 26 69 70 61 64 64 72 2c 20  AR_IP, &ipaddr, 
0600: 27 69 27 29 3b 0a 09 6c 63 5f 72 65 67 69 73 74  'i');..lc_regist
0610: 65 72 5f 63 61 6c 6c 62 61 63 6b 28 22 73 61 6c  er_callback("sal
0620: 6c 79 22 2c 20 30 2c 20 4c 43 5f 56 41 52 5f 53  ly", 0, LC_VAR_S
0630: 54 52 49 4e 47 2c 20 73 61 6c 6c 79 5f 63 6d 64  TRING, sally_cmd
0640: 2c 20 4e 55 4c 4c 29 3b 0a 09 6c 63 5f 72 65 67  , NULL);..lc_reg
0650: 69 73 74 65 72 5f 63 61 6c 6c 62 61 63 6b 28 22  ister_callback("
0660: 48 45 4c 50 22 2c 20 27 68 27 2c 20 4c 43 5f 56  HELP", 'h', LC_V
0670: 41 52 5f 4e 4f 4e 45 2c 20 68 65 6c 70 5f 63 6d  AR_NONE, help_cm
0680: 64 2c 20 4e 55 4c 4c 29 3b 0a 09 6c 63 5f 72 65  d, NULL);..lc_re
0690: 67 69 73 74 65 72 5f 63 61 6c 6c 62 61 63 6b 28  gister_callback(
06a0: 22 2a 2e 69 66 6d 6f 64 75 6c 65 22 2c 20 30 2c  "*.ifmodule", 0,
06b0: 20 4c 43 5f 56 41 52 5f 4e 4f 4e 45 2c 20 63 6d   LC_VAR_NONE, cm
06c0: 64 5f 69 66 6d 6f 64 75 6c 65 2c 20 4e 55 4c 4c  d_ifmodule, NULL
06d0: 29 3b 0a 09 6c 63 70 72 65 74 20 3d 20 6c 63 5f  );..lcpret = lc_
06e0: 70 72 6f 63 65 73 73 5f 66 69 6c 65 28 22 74 65  process_file("te
06f0: 73 74 61 70 70 22 2c 20 22 68 74 74 70 3a 2f 2f  stapp", "http://
0700: 31 30 2e 38 2e 30 2e 32 2f 74 65 73 74 2e 63 6f  10.8.0.2/test.co
0710: 6e 66 22 2c 20 4c 43 5f 43 4f 4e 46 5f 41 50 41  nf", LC_CONF_APA
0720: 43 48 45 29 3b 0a 09 6c 63 70 72 65 74 20 3d 20  CHE);..lcpret = 
0730: 6c 63 5f 70 72 6f 63 65 73 73 28 61 72 67 63 2c  lc_process(argc,
0740: 20 61 72 67 76 2c 20 22 74 65 73 74 61 70 70 22   argv, "testapp"
0750: 2c 20 4c 43 5f 43 4f 4e 46 5f 41 50 41 43 48 45  , LC_CONF_APACHE
0760: 2c 20 22 74 65 73 74 2e 63 66 67 22 29 3b 0a 09  , "test.cfg");..
0770: 6c 63 5f 63 6c 65 61 6e 75 70 28 29 3b 0a 09 69  lc_cleanup();..i
0780: 66 20 28 6c 63 70 72 65 74 20 3c 20 30 29 20 7b  f (lcpret < 0) {
0790: 0a 09 09 66 70 72 69 6e 74 66 28 73 74 64 65 72  ...fprintf(stder
07a0: 72 2c 20 22 45 72 72 6f 72 20 70 72 6f 63 65 73  r, "Error proces
07b0: 73 69 6e 67 20 63 6f 6e 66 69 67 20 66 69 6c 65  sing config file
07c0: 3a 20 25 73 5c 6e 22 2c 20 6c 63 5f 67 65 74 65  : %s\n", lc_gete
07d0: 72 72 73 74 72 28 29 29 3b 0a 09 09 72 65 74 75  rrstr());...retu
07e0: 72 6e 28 45 58 49 54 5f 46 41 49 4c 55 52 45 29  rn(EXIT_FAILURE)
07f0: 3b 0a 09 7d 0a 0a 09 69 66 20 28 6a 6f 65 76 61  ;..}...if (joeva
0800: 6c 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 09 09 66  l != NULL) {...f
0810: 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22  printf(stderr, "
0820: 6a 6f 65 76 61 6c 20 3d 20 5c 22 25 73 5c 22 5c  joeval = \"%s\"\
0830: 6e 22 2c 20 6a 6f 65 76 61 6c 29 3b 0a 09 7d 20  n", joeval);..} 
0840: 65 6c 73 65 20 7b 0a 09 09 66 70 72 69 6e 74 66  else {...fprintf
0850: 28 73 74 64 65 72 72 2c 20 22 6a 6f 65 76 61 6c  (stderr, "joeval
0860: 20 3d 20 5c 22 28 6e 75 6c 6c 29 5c 22 5c 6e 22   = \"(null)\"\n"
0870: 29 3b 0a 09 7d 0a 09 66 70 72 69 6e 74 66 28 73  );..}..fprintf(s
0880: 74 64 65 72 72 2c 20 22 78 76 61 6c 20 3d 20 25  tderr, "xval = %
0890: 6c 6c 75 5c 6e 22 2c 20 28 75 6e 73 69 67 6e 65  llu\n", (unsigne
08a0: 64 20 6c 6f 6e 67 20 6c 6f 6e 67 29 20 78 76 61  d long long) xva
08b0: 6c 29 3b 0a 09 66 70 72 69 6e 74 66 28 73 74 64  l);..fprintf(std
08c0: 65 72 72 2c 20 22 6f 6e 6f 66 66 20 3d 20 25 69  err, "onoff = %i
08d0: 5c 6e 22 2c 20 6f 6e 6f 66 66 29 3b 0a 09 66 70  \n", onoff);..fp
08e0: 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 6c  rintf(stderr, "l
08f0: 6f 6e 67 20 3d 20 25 69 5c 6e 22 2c 20 6f 6e 6f  ong = %i\n", ono
0900: 66 66 32 29 3b 0a 09 66 70 72 69 6e 74 66 28 73  ff2);..fprintf(s
0910: 74 64 65 72 72 2c 20 22 69 70 20 3d 20 25 30 38  tderr, "ip = %08
0920: 6c 78 5c 6e 22 2c 20 28 75 6e 73 69 67 6e 65 64  lx\n", (unsigned
0930: 20 6c 6f 6e 67 29 20 69 70 61 64 64 72 29 3b 0a   long) ipaddr);.
0940: 09 66 6f 72 20 28 69 20 3d 20 6c 63 5f 6f 70 74  .for (i = lc_opt
0950: 69 6e 64 3b 20 69 20 3c 20 61 72 67 63 3b 20 69  ind; i < argc; i
0960: 2b 2b 29 20 7b 0a 09 09 66 70 72 69 6e 74 66 28  ++) {...fprintf(
0970: 73 74 64 65 72 72 2c 20 22 61 72 67 76 5b 25 69  stderr, "argv[%i
0980: 5d 20 3d 20 5c 22 25 73 5c 22 5c 6e 22 2c 20 69  ] = \"%s\"\n", i
0990: 2c 20 61 72 67 76 5b 69 5d 29 3b 0a 09 7d 0a 0a  , argv[i]);..}..
09a0: 09 72 65 74 75 72 6e 28 30 29 3b 0a 7d 0a        .return(0);.}.