Exemplo n.º 1
0
int
main(int argc, char *argv[])
{
  char           *ns,
                 *fname;
  time_t          tme;
  int             i;
  int             argidx;

  argidx = parse_options(argc, argv);

  if (argidx < 0 || argidx > argc - 1) {
    fprintf(stderr,
            "usage: %s [-X P32] <classSchema-directory> [<classSchema-prefix>]\n",
            argv[0]);
    return -1;
  }

  if (swapMode) {
    void           *swapLib =
        dlopen("libsfcObjectImplSwapI32toP32.so", RTLD_LAZY);
    if (swapLib == NULL) {
      fprintf(stderr, "--- swap library not found - %s\n", dlerror());
      exit(16);
    }
    swapEntryClass = dlsym(swapLib, "swapI32toP32Class");
    if (swapEntryClass == NULL) {
      fprintf(stderr, "--- swap entry point not found - %s\n", dlerror());
      exit(16);
    }
  }

  fname = argv[argidx];

  if (argc == argidx + 2)
    ns = argv[argidx + 1];
  else {
    for (i = strlen(fname); i && fname[i] != '/'; i--);
    ns = fname + i + 1;
  }

  tme = time(NULL);
  fprintf(stdout, "/* File generated by classSchema2c %s */\n",
          ctime(&tme));
  if (swapMode) {
    fprintf(stdout, "/* SWAPMODE! */\n");
  }
  fprintf(stdout, "/* input: %s */\n", fname);
  fprintf(stdout, "/*  ns:    %s */\n\n", ns);

  if (newClassRegister(fname, ns) == NULL) {
    return -1;
  }

  return 0;
}
Exemplo n.º 2
0
static UtilHashTable *
gatherNameSpaces(char *dn, UtilHashTable * ns, int first)
{
  DIR            *dir,
                 *dir_test;
  struct dirent  *de;
  char           *n = NULL;
  int             l;
  ClassRegister  *cr;

  if (ns == NULL) {
    ns = UtilFactory->newHashTable(61,
                                   UtilHashTable_charKey |
                                   UtilHashTable_ignoreKeyCase);
    nsBaseLen = strlen(dn) + 1;
  }

  dir = opendir(dn);
  if (dir)
    while ((de = readdir(dir)) != NULL) {
      if (strcmp(de->d_name, ".") == 0)
        continue;
      if (strcmp(de->d_name, "..") == 0)
        continue;
      l = strlen(dn) + strlen(de->d_name) + 4;
      n = (char *) malloc(l + 8);
      strcpy(n, dn);
      strcat(n, "/");
      strcat(n, de->d_name);
      dir_test = opendir(n);
      if (dir_test == NULL) {
        free(n);
        continue;
      }
      closedir(dir_test);
      cr = newClassRegister(n);
      if (cr) {
        ns->ft->put(ns, strdup(n + nsBaseLen), cr);
        gatherNameSpaces(n, ns, 0);
      }
      free(n);
  } else if (first) {
    mlogf(M_ERROR, M_SHOW, "--- Repository %s not found\n", dn);
  }
  closedir(dir);
  return ns;
}
Exemplo n.º 3
0
static UtilHashTable *
gatherNameSpaces()
{
  NamespaceDir   *nd;
  UtilHashTable  *ns;
  ClassRegister  *cr;

  ns = UtilFactory->newHashTable(61,
                                 UtilHashTable_charKey |
                                 UtilHashTable_ignoreKeyCase);

  nd = sfcb_mem_namespaces;
  while (nd && nd->name) {
    cr = newClassRegister(nd->schema, nd->name);
    if (cr) {
      ns->ft->put(ns, nd->name, cr);
    }
    nd += 1;
  }
  return ns;
}