static void _cdecl tar_cmd_main_thread(LPVOID param) { CTar32CmdInfo *pCmdInfo = (CTar32CmdInfo*)param; CTar32CmdInfo &cmdinfo = *pCmdInfo; CTar32StatusDialog dlg; try{ if(cmdinfo.b_display_dialog){ cmdinfo.hTar32StatusDialog = dlg.Create(cmdinfo.hParentWnd); } switch(cmdinfo.command){ case 'x': cmd_extract(cmdinfo); break; case 'c': cmd_create(cmdinfo); break; case 'l': cmd_list(cmdinfo); break; default: throw CTar32Exception("Command not specified.", ERROR_COMMAND_NAME); } // メッセージループの終了前にダイアログを閉じる! 2000/03/03 by tsuneo dlg.Destroy(); if(pCmdInfo->wm_main_thread_end)PostThreadMessage(pCmdInfo->idMessageThread, pCmdInfo->wm_main_thread_end, 0, 0); }catch(CTar32Exception &e){ dlg.Destroy(); if(pCmdInfo->wm_main_thread_end)PostThreadMessage(pCmdInfo->idMessageThread, pCmdInfo->wm_main_thread_end, 0, 0); cmdinfo.exception = e; // throw e; }catch(...){ dlg.Destroy(); } //return 0; }
int main(int argc, const char *argv[]) { io_func* io; Volume* volume; TestByteOrder(); if(argc < 3) { printf("usage: %s <image-file> <ls|cat|mv|symlink|mkdir|add|rm|chmod|extract|extractall|rmall|addall|grow|getattr|debug> <arguments>\n", argv[0]); return 0; } io = openFlatFile(argv[1]); if(io == NULL) { fprintf(stderr, "error: Cannot open image-file.\n"); return 1; } volume = openVolume(io); if(volume == NULL) { fprintf(stderr, "error: Cannot open volume.\n"); CLOSE(io); return 1; } if(argc > 1) { if(strcmp(argv[2], "ls") == 0) { cmd_ls(volume, argc - 2, argv + 2); } else if(strcmp(argv[2], "cat") == 0) { cmd_cat(volume, argc - 2, argv + 2); } else if(strcmp(argv[2], "mv") == 0) { cmd_mv(volume, argc - 2, argv + 2); } else if(strcmp(argv[2], "symlink") == 0) { cmd_symlink(volume, argc - 2, argv + 2); } else if(strcmp(argv[2], "mkdir") == 0) { cmd_mkdir(volume, argc - 2, argv + 2); } else if(strcmp(argv[2], "add") == 0) { cmd_add(volume, argc - 2, argv + 2); } else if(strcmp(argv[2], "rm") == 0) { cmd_rm(volume, argc - 2, argv + 2); } else if(strcmp(argv[2], "chmod") == 0) { cmd_chmod(volume, argc - 2, argv + 2); } else if(strcmp(argv[2], "extract") == 0) { cmd_extract(volume, argc - 2, argv + 2); } else if(strcmp(argv[2], "extractall") == 0) { cmd_extractall(volume, argc - 2, argv + 2); } else if(strcmp(argv[2], "rmall") == 0) { cmd_rmall(volume, argc - 2, argv + 2); } else if(strcmp(argv[2], "addall") == 0) { cmd_addall(volume, argc - 2, argv + 2); } else if(strcmp(argv[2], "grow") == 0) { cmd_grow(volume, argc - 2, argv + 2); } else if(strcmp(argv[2], "getattr") == 0) { cmd_getattr(volume, argc - 2, argv + 2); } else if(strcmp(argv[2], "debug") == 0) { if(argc > 3 && strcmp(argv[3], "verbose") == 0) { debugBTree(volume->catalogTree, TRUE); } else { debugBTree(volume->catalogTree, FALSE); } } } closeVolume(volume); CLOSE(io); return 0; }
int main(int argc, char **argv) { char *cmd; if (setlocale(LC_ALL, "") == NULL) { perror("setlocale"); } if (argc < 3) { LOGERROR(CLI_USAGE_FMT, argv[0]); exit(EXIT_FAILURE); } cmd = argv[1]; if (strcmp(cmd, "add") == 0) { if (cli_add(argc - 2, &argv[2]) != 0) { LOGERROR("TLV addition failed."); return EXIT_FAILURE; } } else if (strcmp(cmd, "extract") == 0) { if (cli_extract(argc - 2, &argv[2]) == -1) { LOGERROR("TLV extraction failed."); return EXIT_FAILURE; } } else if (strcmp(cmd, "dump") == 0) { if (cli_dump_dz(argc - 2, &argv[2]) == -1) { LOGERROR("Dazibao dumping failed."); return EXIT_FAILURE; } } else if (strcmp(cmd, "compact") == 0) { if (cli_compact_dz(argc - 2, &argv[2]) == -1) { LOGERROR("Dazibao dumping failed."); return EXIT_FAILURE; } } else if (strcmp(cmd, "rm") == 0) { if (cli_rm_tlv(argc - 2, &argv[2]) == -1) { LOGERROR("Failed removing TLV."); return EXIT_FAILURE; } } else if (strcmp(cmd, "create") == 0) { if (cli_create_dz(argc - 2, &argv[2]) == -1) { LOGERROR("Failed creating dazibao."); return EXIT_FAILURE; } } else if (!strcmp(cmd, "alt-add")) { if (cmd_add(argc - 2, &argv[2], argv[argc - 1]) != 0) { LOGERROR("TLV addition failed."); return EXIT_FAILURE; } } else if (!strcmp(argv[2], "alt-extract")) { if (cmd_extract(argc - 2, &argv[2], argv[argc - 1]) != 0) { LOGERROR("Extraction failed"); return EXIT_FAILURE; } } else { LOGERROR("%s is not a valid command.", cmd); return EXIT_FAILURE; } return EXIT_SUCCESS; }
int main(int argc, const char *argv[]) { io_func* io; Volume* volume; AbstractFile* image; int argOff; TestByteOrder(); if(argc < 3) { printf("usage: %s <image-file> (-k <key>) <ls|cat|mv|mkdir|add|rm|chmod|extract|extractall|rmall|addall|grow|untar> <arguments>\n", argv[0]); return 0; } argOff = 2; if(strstr(argv[1], ".dmg")) { image = createAbstractFileFromFile(fopen(argv[1], "rb")); if(argc > 3) { if(strcmp(argv[2], "-k") == 0) { image = createAbstractFileFromFileVault(image, argv[3]); argOff = 4; } } io = openDmgFilePartition(image, -1); } else { io = openFlatFile(argv[1]); } if(io == NULL) { fprintf(stderr, "error: Cannot open image-file.\n"); return 1; } volume = openVolume(io); if(volume == NULL) { fprintf(stderr, "error: Cannot open volume.\n"); CLOSE(io); return 1; } if(argc > argOff) { if(strcmp(argv[argOff], "ls") == 0) { cmd_ls(volume, argc - argOff, argv + argOff); } else if(strcmp(argv[argOff], "cat") == 0) { cmd_cat(volume, argc - argOff, argv + argOff); } else if(strcmp(argv[argOff], "mv") == 0) { cmd_mv(volume, argc - argOff, argv + argOff); } else if(strcmp(argv[2], "symlink") == 0) { cmd_symlink(volume, argc - 2, argv + 2); } else if(strcmp(argv[argOff], "mkdir") == 0) { cmd_mkdir(volume, argc - argOff, argv + argOff); } else if(strcmp(argv[argOff], "add") == 0) { cmd_add(volume, argc - argOff, argv + argOff); } else if(strcmp(argv[argOff], "rm") == 0) { cmd_rm(volume, argc - argOff, argv + argOff); } else if(strcmp(argv[argOff], "chmod") == 0) { cmd_chmod(volume, argc - argOff, argv + argOff); } else if(strcmp(argv[argOff], "extract") == 0) { cmd_extract(volume, argc - argOff, argv + argOff); } else if(strcmp(argv[argOff], "extractall") == 0) { cmd_extractall(volume, argc - argOff, argv + argOff); } else if(strcmp(argv[argOff], "rmall") == 0) { cmd_rmall(volume, argc - argOff, argv + argOff); } else if(strcmp(argv[argOff], "addall") == 0) { cmd_addall(volume, argc - argOff, argv + argOff); } else if(strcmp(argv[argOff], "grow") == 0) { cmd_grow(volume, argc - argOff, argv + argOff); } else if(strcmp(argv[argOff], "untar") == 0) { cmd_untar(volume, argc - argOff, argv + argOff); } } closeVolume(volume); CLOSE(io); return 0; }