int main(int argc, char *argv[]) { const SGML_dtd *the_dtd = &HTML_dtd; int ch; int dtd_version = 0; int c_option = FALSE; int h_option = FALSE; int l_option = FALSE; FILE *input = stdin; FILE *output = stdout; while ((ch = getopt(argc, argv, GETOPT)) != -1) { switch (ch) { case 'c': c_option = TRUE; break; case 'h': h_option = TRUE; break; case 'l': l_option = TRUE; input = fopen(optarg, "r"); if (input == 0) failed(optarg); break; case 'o': output = fopen(optarg, "w"); if (output == 0) failed(optarg); break; case 't': dtd_version = 1; break; case 's': dtd_version = 0; break; default: usage(); } } HTSwitchDTD(dtd_version); if (l_option) the_dtd = load_flatfile(input); if (the_dtd != 0) { if (c_option) dump_source(output, the_dtd, dtd_version); if (h_option) dump_header(output, the_dtd); if (!c_option && !h_option) dump_flatfile(output, the_dtd); } return EXIT_SUCCESS; }
static void dump_group (ESourceGroup *group) { GSList *sources, *p; g_print ("Group %s\n", e_source_group_peek_uid (group)); g_print ("\tname: %s\n", e_source_group_peek_name (group)); g_print ("\tbase_uri: %s\n", e_source_group_peek_base_uri (group)); sources = e_source_group_peek_sources (group); for (p = sources; p != NULL; p = p->next) { ESource *source = E_SOURCE (p->data); dump_source (source); if (e_source_peek_group (source) != group) g_warning ("\t\t** ERROR ** parent pointer is %p, should be %p", (gpointer) e_source_peek_group (source), (gpointer) group); } }
static bool list_source(struct luadebug_debugger *session, const char *option) { if (option) { if (strcmp(option, "-") == 0) { session->list_line -= 2*LIST_DEFAULT_LINE + 1; } else if (strcmp(option, "+") == 0) { } else { const int line = atoi(option); session->list_line = line - LIST_DEFAULT_LINE/2; } } if (session->list_line < 0) { session->list_line = 0; } dump_source(session, &session->frame, session->list_line, session->list_line + LIST_DEFAULT_LINE); session->list_line += LIST_DEFAULT_LINE+1; return false; }
void next() { char *pp; while ((tk = *p)) { ++p; if (tk == '\n') { dump_source(); } else if (tk == '#') { while (*p != 0 && *p != '\n') ++p; } else if ((tk >= 'a' && tk <= 'z') || (tk >= 'A' && tk <= 'Z') || tk == '_') { pp = p - 1; while ( (*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z') || (*p >= '0' && *p <= '9') || *p == '_') tk = tk * 147 + *p++; tk = (tk << 6) + (p - pp); id = sym; while (id[Tk]) { if (tk == id[Hash] && !memcmp((char *)id[Name], pp, p - pp)) { tk = id[Tk]; return; } id = id + Idsz; } id[Name] = (int)pp; id[Hash] = tk; tk = id[Tk] = Id; return; } else if (tk >= '0' && tk <= '9') { ival = tk - '0'; if (*p == 'x' || *p == 'X') { p++; while (1) { int v; v = *p; if (v >= '0' && v <= '9') { } else if (v >= 'A' && v <= 'F') { v -= 7; // 'A' - ('9' + 1) = 7 } else if (v >= 'a' && v <= 'f') { v -= 39; // 'a' - ('9' + 1) = 39 } else { break; } ival = ival * 16 + v - '0'; p++; } } else { while (*p >= '0' && *p <= '9') { ival = ival * 10 + *p++ - '0'; } } tk = Num; return; } else if (tk == '/') { if (*p == '/') { ++p; while (*p != 0 && *p != '\n') ++p; } else { tk = Div; return; } } else if (tk == '\'' || tk == '"') { pp = data; while (*p != 0 && *p != tk) { if ((ival = *p++) == '\\') { if ((ival = *p++) == 'n') ival = '\n'; } if (tk == '"') *data++ = ival; } ++p; if (tk == '"') { ival = (int)(pp - bd); } else { tk = Num; } return; } else if (tk == '=') { if (*p == '=') { ++p; tk = Eq; } else { tk = Assign; } return; } else if (tk == '+') { if (*p == '+') { ++p; tk = Inc; } else tk = Add; return; } else if (tk == '-') { if (*p == '-') { ++p; tk = Dec; } else tk = Sub; return; } else if (tk == '!') { if (*p == '=') { ++p; tk = Ne; } return; } else if (tk == '<') { if (*p == '=') { ++p; tk = Le; } else if (*p == '<') { ++p; tk = Shl; } else { tk = Lt; } return; } else if (tk == '>') { if (*p == '=') { ++p; tk = Ge; } else if (*p == '>') { ++p; tk = Shr; } else { tk = Gt; } return; } else if (tk == '|') { if (*p == '|') { ++p; tk = Lor; } else { tk = Or; } return; } else if (tk == '&') { if (*p == '&') { ++p; tk = Lan; } else { tk = And; } return; } else if (tk == '^') { tk = Xor; return; } else if (tk == '%') { tk = Mod; return; } else if (tk == '*') { tk = Mul; return; } else if (tk == '[') { tk = Brak; return; } else if (tk == '?') { tk = Cond; return; } else if (tk == '~' || tk == ';' || tk == '{' || tk == '}' || tk == '(' || tk == ')' || tk == ']' || tk == ',' || tk == ':') { return; } } }