void shutdown() { GtkWidget *dialog; int lang = get_lang(); dialog = make_dialog(item_labels[3], dialog_icon_file); gtk_widget_show_all(dialog); }
void reboot() { GtkWidget *dialog; int lang = get_lang(); dialog = make_dialog(item_labels[2], dialog_icon_file); gtk_widget_show_all(dialog); }
static int open_db() { char *insultdir = getenv("INSULTERR_DIR"); if (insultdir == NULL) { insultdir = "/usr/share/insulterr"; } int dl = strlen(insultdir); if (insultdir[dl - 1] == '/') { dl--; } ssize_t ll; char *l = get_lang(&ll); char *buf = alloca(dl + ll + 6); memcpy(buf, insultdir, dl); buf[dl++] = '/'; do { char *e = memchrnul(l, ':', ll); if (memcmp(l, "C", e - l > 2 ? e - l : 2)) { memcpy(buf + dl, l, e - l); memcpy(buf + dl + (e - l), ".txt", 5); } else { memcpy(buf + dl, "en", 2); memcpy(buf + dl + 2, ".txt", 5); } int fd = open(buf, O_RDONLY | O_CLOEXEC); if (fd >= 0) { return fd; } ll -= (e - l) + 1; l = e + 1; } while (ll > 0); return -1; }
/* initialise the message translation subsystem. If the "lang" argument is NULL then get the language from the normal environment variables */ BOOL lang_tdb_init(const char *lang) { char *path = NULL; char *msg_path = NULL; struct stat st; static int initialised; time_t loadtime; BOOL result = False; /* we only want to init once per process, unless given an override */ if (initialised && !lang) return True; if (initialised) { /* we are re-initialising, free up any old init */ if (tdb) { tdb_close(tdb); tdb = NULL; } SAFE_FREE(current_lang); } initialised = 1; if (!lang) { /* no lang given, use environment */ lang = get_lang(); } /* if no lang then we don't translate */ if (!lang) return True; asprintf(&msg_path, "%s.msg", lib_path((const char *)lang)); if (stat(msg_path, &st) != 0) { /* the msg file isn't available */ DEBUG(10, ("lang_tdb_init: %s: %s\n", msg_path, strerror(errno))); goto done; } asprintf(&path, "%s%s.tdb", lock_path("lang_"), lang); DEBUG(10, ("lang_tdb_init: loading %s\n", path)); tdb = tdb_open_log(path, 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0644); if (!tdb) { tdb = tdb_open_log(path, 0, TDB_DEFAULT, O_RDONLY, 0); if (!tdb) { DEBUG(10, ("lang_tdb_init: %s: %s\n", path, strerror(errno))); goto done; } current_lang = SMB_STRDUP(lang); result = True; goto done; } loadtime = tdb_fetch_int32(tdb, "/LOADTIME/"); if (loadtime == -1 || loadtime < st.st_mtime) { load_msg(msg_path); tdb_store_int32(tdb, "/LOADTIME/", (int)time(NULL)); } current_lang = SMB_STRDUP(lang); result = True; done: SAFE_FREE(msg_path); SAFE_FREE(path); return result; }
int main (int argc, char **argv) { static Entry entries[MAX_LANG]; static FcCharSet *sets[MAX_LANG]; static int duplicate[MAX_LANG]; static int country[MAX_LANG]; static char *names[MAX_LANG]; static char *langs[MAX_LANG]; static int off[MAX_LANG]; FILE *f; int ncountry = 0; int i = 0; int nsets = 0; int argi; FcCharLeaf **leaves; int total_leaves = 0; int l, sl, tl, tn; static char line[1024]; static FcChar32 map[MAX_LANG_SET_MAP]; int num_lang_set_map; int setRangeStart[26]; int setRangeEnd[26]; FcChar8 setRangeChar; FcCharSetFreezer *freezer; freezer = FcCharSetFreezerCreate (); if (!freezer) fatal (argv[0], 0, "out of memory"); argi = 1; while (argv[argi]) { if (!strcmp (argv[argi], "-d")) { argi++; dir = argv[argi++]; continue; } if (i == MAX_LANG) fatal (argv[0], 0, "Too many languages"); entries[i].id = i; entries[i].file = argv[argi++]; i++; } entries[i].file = 0; qsort (entries, i, sizeof (Entry), compare); i = 0; while (entries[i].file) { f = scanopen (entries[i].file); if (!f) fatal (entries[i].file, 0, strerror (errno)); sets[i] = scan (f, entries[i].file, freezer); names[i] = get_name (entries[i].file); langs[i] = get_lang(names[i]); if (strchr (langs[i], '-')) country[ncountry++] = i; total_leaves += sets[i]->num; i++; fclose (f); } nsets = i; sets[i] = 0; leaves = malloc (total_leaves * sizeof (FcCharLeaf *)); tl = 0; /* * Find unique leaves */ for (i = 0; sets[i]; i++) { for (sl = 0; sl < sets[i]->num; sl++) { for (l = 0; l < tl; l++) if (leaves[l] == FcCharSetLeaf(sets[i], sl)) break; if (l == tl) leaves[tl++] = FcCharSetLeaf(sets[i], sl); } } /* * Scan the input until the marker is found */ while (fgets (line, sizeof (line), stdin)) { if (!strncmp (line, "@@@", 3)) break; fputs (line, stdout); } printf ("/* total size: %d unique leaves: %d */\n\n", total_leaves, tl); /* * Find duplicate charsets */ duplicate[0] = -1; for (i = 1; sets[i]; i++) { int j; duplicate[i] = -1; for (j = 0; j < i; j++) if (sets[j] == sets[i]) { duplicate[i] = j; break; } } tn = 0; for (i = 0; sets[i]; i++) { if (duplicate[i] >= 0) continue; off[i] = tn; tn += sets[i]->num; } printf ("#define LEAF0 (%d * sizeof (FcLangCharSet))\n", nsets); printf ("#define OFF0 (LEAF0 + %d * sizeof (FcCharLeaf))\n", tl); printf ("#define NUM0 (OFF0 + %d * sizeof (uintptr_t))\n", tn); printf ("#define SET(n) (n * sizeof (FcLangCharSet) + offsetof (FcLangCharSet, charset))\n"); printf ("#define OFF(s,o) (OFF0 + o * sizeof (uintptr_t) - SET(s))\n"); printf ("#define NUM(s,n) (NUM0 + n * sizeof (FcChar16) - SET(s))\n"); printf ("#define LEAF(o,l) (LEAF0 + l * sizeof (FcCharLeaf) - (OFF0 + o * sizeof (intptr_t)))\n"); printf ("#define fcLangCharSets (fcLangData.langCharSets)\n"); printf ("#define fcLangCharSetIndices (fcLangData.langIndices)\n"); printf ("#define fcLangCharSetIndicesInv (fcLangData.langIndicesInv)\n"); printf ("\n"); printf ("static const struct {\n" " FcLangCharSet langCharSets[%d];\n" " FcCharLeaf leaves[%d];\n" " uintptr_t leaf_offsets[%d];\n" " FcChar16 numbers[%d];\n" " FcChar%s langIndices[%d];\n" " FcChar%s langIndicesInv[%d];\n" "} fcLangData = {\n", nsets, tl, tn, tn, nsets < 256 ? "8 " : "16", nsets, nsets < 256 ? "8 " : "16", nsets); /* * Dump sets */ printf ("{\n"); for (i = 0; sets[i]; i++) { int j = duplicate[i]; if (j < 0) j = i; printf (" { \"%s\", " " { FC_REF_CONSTANT, %d, OFF(%d,%d), NUM(%d,%d) } }, /* %d */\n", langs[i], sets[j]->num, i, off[j], i, off[j], i); } printf ("},\n"); /* * Dump leaves */ printf ("{\n"); for (l = 0; l < tl; l++) { printf (" { { /* %d */", l); for (i = 0; i < 256/32; i++) { if (i % 4 == 0) printf ("\n "); printf (" 0x%08x,", leaves[l]->map[i]); } printf ("\n } },\n"); } printf ("},\n"); /* * Dump leaves */ printf ("{\n"); for (i = 0; sets[i]; i++) { int n; if (duplicate[i] >= 0) continue; printf (" /* %s */\n", names[i]); for (n = 0; n < sets[i]->num; n++) { if (n % 4 == 0) printf (" "); for (l = 0; l < tl; l++) if (leaves[l] == FcCharSetLeaf(sets[i], n)) break; if (l == tl) fatal (names[i], 0, "can't find leaf"); printf (" LEAF(%3d,%3d),", off[i], l); if (n % 4 == 3) printf ("\n"); } if (n % 4 != 0) printf ("\n"); } printf ("},\n"); printf ("{\n"); for (i = 0; sets[i]; i++) { int n; if (duplicate[i] >= 0) continue; printf (" /* %s */\n", names[i]); for (n = 0; n < sets[i]->num; n++) { if (n % 8 == 0) printf (" "); printf (" 0x%04x,", FcCharSetNumbers (sets[i])[n]); if (n % 8 == 7) printf ("\n"); } if (n % 8 != 0) printf ("\n"); } printf ("},\n"); /* langIndices */ printf ("{\n"); for (i = 0; sets[i]; i++) { printf (" %d, /* %s */\n", entries[i].id, names[i]); } printf ("},\n"); /* langIndicesInv */ printf ("{\n"); { static int entries_inv[MAX_LANG]; for (i = 0; sets[i]; i++) entries_inv[entries[i].id] = i; for (i = 0; sets[i]; i++) printf (" %d, /* %s */\n", entries_inv[i], names[entries_inv[i]]); } printf ("}\n"); printf ("};\n\n"); printf ("#define NUM_LANG_CHAR_SET %d\n", i); num_lang_set_map = (i + 31) / 32; printf ("#define NUM_LANG_SET_MAP %d\n", num_lang_set_map); /* * Dump indices with country codes */ if (ncountry) { int c; int ncountry_ent = 0; printf ("\n"); printf ("static const FcChar32 fcLangCountrySets[][NUM_LANG_SET_MAP] = {\n"); for (c = 0; c < ncountry; c++) { i = country[c]; if (i >= 0) { int lang = strchr (langs[i], '-') - langs[i]; int d, k; for (k = 0; k < num_lang_set_map; k++) map[k] = 0; BitSet (map, i); for (d = c + 1; d < ncountry; d++) { int j = country[d]; if (j >= 0 && !strncmp (langs[j], langs[i], lang + 1)) { BitSet(map, j); country[d] = -1; } } printf (" {"); for (k = 0; k < num_lang_set_map; k++) printf (" 0x%08x,", map[k]); printf (" }, /* %*.*s */\n", lang, lang, langs[i]); ++ncountry_ent; } } printf ("};\n\n"); printf ("#define NUM_COUNTRY_SET %d\n", ncountry_ent); } /* * Find ranges for each letter for faster searching */ setRangeChar = 'a'; memset(setRangeStart, '\0', sizeof (setRangeStart)); memset(setRangeEnd, '\0', sizeof (setRangeEnd)); for (i = 0; sets[i]; i++) { char c = names[i][0]; while (setRangeChar <= c && c <= 'z') setRangeStart[setRangeChar++ - 'a'] = i; } for (setRangeChar = 'a'; setRangeChar < 'z'; setRangeChar++) setRangeEnd[setRangeChar - 'a'] = setRangeStart[setRangeChar+1-'a'] - 1; setRangeEnd[setRangeChar - 'a'] = i - 1; /* * Dump sets start/finish for the fastpath */ printf ("\n"); printf ("static const FcLangCharSetRange fcLangCharSetRanges[] = {\n"); printf ("\n"); for (setRangeChar = 'a'; setRangeChar <= 'z' ; setRangeChar++) { printf (" { %d, %d }, /* %c */\n", setRangeStart[setRangeChar - 'a'], setRangeEnd[setRangeChar - 'a'], setRangeChar); } printf ("};\n\n"); while (fgets (line, sizeof (line), stdin)) fputs (line, stdout); fflush (stdout); exit (ferror (stdout)); }
int main(int argc, char *argv[]) { int i; char *name = argv[0]; char locale[256]; locale[0] = 0; color[0] = 0; for (i=1; i<argc; i++) { char *arg = argv[i]; if (*arg=='-') { switch (arg[1]) { case 'c' : if (argc > i+1) { strcpy(color, argv[i+1]); i++; } break; case 'd' : if (strcmp(arg+1, "display") && strcmp(arg+1, "digital") && strcmp(arg+1, "d")) { usage(name); return 1; } if (!strcmp(arg+1, "digital") || !(strcmp(arg+1, "d"))) digital = 1; break; case 'g' : if (strcmp(arg+1, "geometry")) { usage(name); return 1; } break; case 'n' : if (strcmp(arg+1, "noseconds") && strcmp(arg+1, "n")) { usage(name); return 1; } else { noseconds = 1; } break; case 'v' : printversion(); return 0; case 'l': if (argc > i+1) { strcpy(locale, argv[i+1]); i++; } break; default: usage(name); return 1; } } } if (setlocale(LC_ALL, locale) == NULL) fprintf(stderr, "warning: locale '%s' not recognized; defaulting to '%s'.", locale, setlocale(LC_ALL, NULL)); get_lang(); wmtime_routine(argc, argv); return 0; }
int main (int argc, char **argv) { char *files[MAX_LANG]; FcCharSet *sets[MAX_LANG]; int duplicate[MAX_LANG]; int country[MAX_LANG]; char *names[MAX_LANG]; char *langs[MAX_LANG]; FILE *f; int ncountry = 0; int i = 0; FcCharLeaf **leaves, **sleaves; int total_leaves = 0; int l, sl, tl; int c; char line[1024]; FcChar32 map[MAX_LANG_SET_MAP]; int num_lang_set_map; while (*++argv) { if (i == MAX_LANG) fatal (*argv, 0, "Too many languages"); files[i++] = *argv; } files[i] = 0; qsort (files, i, sizeof (char *), compare); i = 0; while (files[i]) { f = fopen (files[i], "r"); if (!f) fatal (files[i], 0, strerror (errno)); sets[i] = scan (f, files[i]); names[i] = get_name (files[i]); langs[i] = get_lang(names[i]); if (strchr (langs[i], '-')) country[ncountry++] = i; total_leaves += sets[i]->num; i++; fclose (f); } sets[i] = 0; leaves = malloc (total_leaves * sizeof (FcCharLeaf *)); tl = 0; /* * Find unique leaves */ for (i = 0; sets[i]; i++) { sleaves = sets[i]->leaves; for (sl = 0; sl < sets[i]->num; sl++) { for (l = 0; l < tl; l++) if (leaves[l] == sleaves[sl]) break; if (l == tl) leaves[tl++] = sleaves[sl]; } } /* * Scan the input until the marker is found */ while (fgets (line, sizeof (line), stdin)) { if (!strncmp (line, "@@@", 3)) break; fputs (line, stdout); } printf ("/* total size: %d unique leaves: %d */\n\n", total_leaves, tl); /* * Dump leaves */ printf ("static const FcCharLeaf leaves[%d] = {\n", tl); for (l = 0; l < tl; l++) { printf (" { { /* %d */", l); for (i = 0; i < 256/32; i++) { if (i % 4 == 0) printf ("\n "); printf (" 0x%08x,", leaves[l]->map[i]); } printf ("\n } },\n"); } printf ("};\n\n"); printf ("#define L(n) ((FcCharLeaf *) &leaves[n])\n\n"); /* * Find duplicate charsets */ duplicate[0] = -1; for (i = 1; sets[i]; i++) { int j; duplicate[i] = -1; for (j = 0; j < i; j++) if (sets[j] == sets[i]) { duplicate[i] = j; break; } } /* * Dump arrays */ for (i = 0; sets[i]; i++) { int n; if (duplicate[i] >= 0) continue; printf ("static const FcCharLeaf *leaves_%s[%d] = {\n", names[i], sets[i]->num); for (n = 0; n < sets[i]->num; n++) { if (n % 8 == 0) printf (" "); for (l = 0; l < tl; l++) if (leaves[l] == sets[i]->leaves[n]) break; if (l == tl) fatal (names[i], 0, "can't find leaf"); printf (" L(%3d),", l); if (n % 8 == 7) printf ("\n"); } if (n % 8 != 0) printf ("\n"); printf ("};\n\n"); printf ("static const FcChar16 numbers_%s[%d] = {\n", names[i], sets[i]->num); for (n = 0; n < sets[i]->num; n++) { if (n % 8 == 0) printf (" "); printf (" 0x%04x,", sets[i]->numbers[n]); if (n % 8 == 7) printf ("\n"); } if (n % 8 != 0) printf ("\n"); printf ("};\n\n"); } printf ("#undef L\n\n"); /* * Dump sets */ printf ("static const FcLangCharSet fcLangCharSets[] = {\n"); for (i = 0; sets[i]; i++) { int j = duplicate[i]; if (j < 0) j = i; printf (" { (FcChar8 *) \"%s\",\n" " { FC_REF_CONSTANT, %d, " "(FcCharLeaf **) leaves_%s, " "(FcChar16 *) numbers_%s } },\n", langs[i], sets[j]->num, names[j], names[j]); } printf ("};\n\n"); printf ("#define NUM_LANG_CHAR_SET %d\n", i); num_lang_set_map = (i + 31) / 32; printf ("#define NUM_LANG_SET_MAP %d\n", num_lang_set_map); /* * Dump indices with country codes */ if (ncountry) { int ncountry_ent = 0; printf ("\n"); printf ("static const FcChar32 fcLangCountrySets[][NUM_LANG_SET_MAP] = {\n"); for (c = 0; c < ncountry; c++) { i = country[c]; if (i >= 0) { int l = strchr (langs[i], '-') - langs[i]; int d, k; for (k = 0; k < num_lang_set_map; k++) map[k] = 0; BitSet (map, i); for (d = c + 1; d < ncountry; d++) { int j = country[d]; if (j >= 0 && !strncmp (langs[j], langs[i], l)) { BitSet(map, j); country[d] = -1; } } printf (" {"); for (k = 0; k < num_lang_set_map; k++) printf (" 0x%08x,", map[k]); printf (" }, /* %*.*s */\n", l, l, langs[i]); ++ncountry_ent; } } printf ("};\n\n"); printf ("#define NUM_COUNTRY_SET %d\n", ncountry_ent); } while (fgets (line, sizeof (line), stdin)) fputs (line, stdout); fflush (stdout); exit (ferror (stdout)); }
int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget *image; GtkWidget *fixed; // GtkWidget *item; GtkWidget *mainWindow; GdkScreen* scr; GdkBitmap *window_mask; GdkPixmap *pixmap; GdkBitmap *pixmap_mask; int lang = get_lang(); switch(lang) { case 0: item_labels[0] = g_strdup_printf("重启"); item_labels[1] = g_strdup_printf("待机"); item_labels[2] = g_strdup_printf("关机"); item_labels[3] = g_strdup_printf("取消"); break; case 1: item_labels[0] = g_strdup_printf("Restart"); item_labels[1] = g_strdup_printf("Stand By"); item_labels[2] = g_strdup_printf("Turn off"); item_labels[3] = g_strdup_printf("Cancel"); break; case 2: item_labels[0] = g_strdup_printf("再起動"); item_labels[1] = g_strdup_printf("スタンバイ"); item_labels[2] = g_strdup_printf("電源を切る"); item_labels[3] = g_strdup_printf("キャンセル"); break; } gtk_init(&argc, &argv); //---------------------------------------------- mainWindow = gtk_window_new( GTK_WINDOW_POPUP); scr = gtk_window_get_screen( GTK_WINDOW( mainWindow)); GdkColor white; gdk_color_parse("#9c9c9c",&white); gtk_widget_modify_bg(mainWindow,GTK_STATE_NORMAL,&white); gtk_window_set_default_size( GTK_WINDOW( mainWindow), gdk_screen_get_width( scr), gdk_screen_get_height( scr)); //gtk_widget_set_size_request(mainWindow, window_width, window_height); gtk_window_fullscreen( GTK_WINDOW( mainWindow)); gtk_widget_show_all( mainWindow); gtk_widget_realize(GTK_WIDGET(mainWindow)); Display *xdpy = XOpenDisplay(getenv("DISPLAY")); GdkWindow *gdkwin = GTK_WIDGET(mainWindow)->window; Window xwin = GDK_WINDOW_XID(gdkwin); unsigned int opacity = (unsigned int) (0.70 * OPAQUE); XChangeProperty(xdpy, xwin, XInternAtom(xdpy, OPACITY, False), XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &opacity, 1L); // XSync(xdpy, False); //---------------------------------------------- window = gtk_window_new(GTK_WINDOW_POPUP); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(destroy), NULL); gtk_window_set_default_size(GTK_WINDOW(window), window_width, window_height); //gtk_widget_set_size_request(window, window_width, window_height); //gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_window_move(GTK_WINDOW(window), 249,163); gtk_window_set_modal(window,FALSE); gtk_window_set_decorated(GTK_WINDOW(window), FALSE); gtk_window_set_title (GTK_WINDOW (window),"CloseWindow"); /*gdk_pointer_grab (window->window, FALSE, (GdkEventMask)EVENT_MASKS, 0, NULL, GDK_CURRENT_TIME);*/ gdk_pixmap_create_from_xpm(window->window, &window_mask, NULL, background_png); gtk_widget_shape_combine_mask (window, window_mask, 0, 0); gtk_widget_realize(GTK_WIDGET(window)); Display *xdpy2 = XOpenDisplay(getenv("DISPLAY")); GdkWindow *gdkwin2 = GTK_WIDGET(window)->window; Window xwin2 = GDK_WINDOW_XID(gdkwin2); unsigned int opacity2 = (unsigned int) (0.80 * OPAQUE); XChangeProperty(xdpy2, xwin2, XInternAtom(xdpy2, OPACITY, False), XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &opacity2, 1L); gtk_widget_show_all(window); fixed = gtk_fixed_new(); gtk_container_add(GTK_CONTAINER(window), fixed); gtk_widget_show(fixed); pixmap = gdk_pixmap_create_from_xpm(window->window, &pixmap_mask, NULL, background_png); image = gtk_image_new_from_pixmap(pixmap, pixmap_mask); gtk_fixed_put(GTK_FIXED(fixed), image, 0, 0); gtk_widget_show(image); make_icon_area(fixed); //make_cancel_button(fixed); XSync(xdpy, False);XSync(xdpy2, False); gtk_main(); return 0; }
WB_LONG main(WB_LONG argc, WB_TINY **argv) { WB_UTINY *wbxml = NULL, *output = NULL, *xml = NULL; FILE *input_file = NULL, *output_file = NULL; WB_LONG count = 0, wbxml_len = 0, total = 0; WB_ULONG xml_len = 0; WB_TINY opt; WBXMLError ret = WBXML_OK; WB_UTINY input_buffer[INPUT_BUFFER_SIZE + 1]; WBXMLGenXMLParams params; /* Init Default Parameters */ params.lang = WBXML_LANG_UNKNOWN; params.gen_type = WBXML_GEN_XML_INDENT; params.indent = 1; params.keep_ignorable_ws = FALSE; while ((opt = (WB_TINY) getopt(argc, argv, "kh?o:m:i:l:")) != EOF) { switch (opt) { case 'k': params.keep_ignorable_ws = TRUE; break; case 'i': params.indent = (WB_UTINY) atoi((const WB_TINY*)optarg); break; case 'l': params.lang = get_lang((const WB_TINY*)optarg); break; case 'm': switch (atoi((const WB_TINY*)optarg)) { case 0: params.gen_type = WBXML_GEN_XML_COMPACT; break; case 1: params.gen_type = WBXML_GEN_XML_INDENT; break; case 2: params.gen_type = WBXML_GEN_XML_CANONICAL; break; default: params.gen_type = WBXML_GEN_XML_INDENT; } break; case 'o': output = (WB_UTINY*) optarg; break; case 'h': case '?': default: help(); return 0; } } if (optind >= argc) { fprintf(stderr, "Missing arguments\n"); help(); return 0; } #ifdef WBXML_USE_LEAKTRACKER lt_init_mem(); lt_log_open_file("wbxml2xml.log"); lt_log(0, "\n***************************\n Converting file: %s", argv[optind]); #endif /********************************** * Read the WBXML Document */ if (WBXML_STRCMP(argv[optind], "-") == 0) { input_file = stdin; } else { /* Open WBXML document */ input_file = fopen(argv[optind], "rb"); if (input_file == NULL) { fprintf(stderr, "Failed to open %s\n", argv[optind]); goto clean_up; } } /* Read WBXML document */ while(!feof(input_file)) { count = fread(input_buffer, sizeof(WB_UTINY), INPUT_BUFFER_SIZE, input_file); if (ferror(input_file)) { fprintf(stderr, "Error while reading from file %s\n", argv[optind]); if (input_file != stdin) fclose(input_file); if (wbxml != NULL) wbxml_free(wbxml); goto clean_up; } total += count; wbxml = wbxml_realloc(wbxml, total); if (wbxml == NULL) { fprintf(stderr, "Not enought memory\n"); if (input_file != stdin) fclose(input_file); if (wbxml != NULL) wbxml_free(wbxml); goto clean_up; } memcpy(wbxml + wbxml_len, input_buffer, count); wbxml_len += count; } if (input_file != stdin) fclose(input_file); /* Convert WBXML document */ ret = wbxml_conv_wbxml2xml_withlen(wbxml, wbxml_len, &xml, &xml_len, ¶ms); if (ret != WBXML_OK) { fprintf(stderr, "wbxml2xml failed: %s\n", wbxml_errors_string(ret)); } else { /* fprintf(stderr, "wbxml2xml succeded: \n%s\n", xml); */ fprintf(stderr, "wbxml2xml succeded\n"); if (output != NULL) { if (WBXML_STRCMP(output, "-") == 0) { output_file = stdout; } else { /* Open Output File */ output_file = fopen((const WB_TINY*) output, "w"); } if (output_file == NULL) { fprintf(stderr, "Failed to open output file: %s\n", output); } /* Write to Output File */ if (fwrite(xml, sizeof(WB_UTINY), xml_len, output_file) < xml_len) fprintf(stderr, "Error while writing to file: %s\n", output); /* else fprintf(stderr, "Written %u bytes to file: %s\n", xml_len, output); */ if (output_file != stdout) fclose(output_file); } /* Clean-up */ wbxml_free(xml); } wbxml_free(wbxml); clean_up: #ifdef WBXML_USE_LEAKTRACKER lt_check_leaks(); lt_shutdown_mem(); lt_log_close_file(); #endif return 0; }