int __cdecl main(int argc, char** argv, char** envp) { PUSER_DIR_INFO info = NULL; HANDLE hThread = NULL; uint32_t status = 0; uint32_t depth = 0; if(argc < 2 || (0 == (depth = strtoul(argv[1], NULL, 0)))) { depth = 10; } if(DIRLIST_SUCCESS != (status = dirlist_init(&info, OUTPATH, depth))) { return status; } if(NULL == (hThread = CreateThread(NULL, 0, do_work, info, 0, NULL))) { printf("[x] Failed to start running our worker! :(\n"); return GetLastError(); } WaitForSingleObject(hThread, INFINITE); dirlist_free(info); CloseHandle(hThread); return 0; }
/*char *FileList[] = { "D:\\sci\\game\\obj.sc", "D:\\sci\\game\\game.sc", "D:\\sci\\game\\main.sc", "D:\\sci\\game\\menubar.sc", "D:\\sci\\game\\controls.sc", }; #define TOTAL_FILES 5 #define DIRECTORY "D:\\sci\\game\\" */ int main(int argc, char *argv[]) { printf( "SCI Script Compiler\n" "Version %d.%d.%d - (%s)\n" "By Brian Provinciano\n\n", VERSION.Major,VERSION.Minor,VERSION.Build, PLATFORM_NAME ); if(argc < 2) { printf( "\nUseage:\n" "SCC [input.sc] [gamedirectory]\n" ); return FALSE; } else { if(argc > 2) strcpy(Directory,argv[2]); else strcpy(Directory,".\\"); } if(strcmp(Directory,".\\")!=0) { lib_dirs=dirlist_add(lib_dirs,".\\"); include_dirs=dirlist_add(include_dirs,".\\"); } lib_dirs=dirlist_add(lib_dirs,Directory); include_dirs=dirlist_add(include_dirs,Directory); output_dir=dirlist_add(output_dir,Directory); if(CompileScript(argv[1])) ShowMessage(smCOMPILE,"Successful!"); else ShowMessage(smCOMPILE,"Failed!"); FreeEverything(); dirlist_free(lib_dirs); dirlist_free(output_dir); dirlist_free(include_dirs); return TRUE; }
void root_free(void) { int i; // Free the match list, if any. for (i = 0; i < root_count; i++) { SAFE_FREE(root_array[i].path); SAFE_FREE(root_array[i].http_host); SAFE_FREE(root_array[i].http_file); SAFE_FREE(root_array[i].url); } SAFE_FREE(root_array); root_count = 0; dirlist_free(); }
static liAction* dirlist_create(liServer *srv, liWorker *wrk, liPlugin* p, liValue *val, gpointer userdata) { dirlist_data *data; UNUSED(wrk); UNUSED(userdata); val = li_value_get_single_argument(val); if (NULL != val && NULL == (val = li_value_to_key_value_list(val))) { ERROR(srv, "%s", "dirlist expects an optional list of string-value pairs"); return NULL; } data = g_slice_new0(dirlist_data); data->plugin = p; data->hide_dotfiles = TRUE; data->hide_tildefiles = TRUE; data->include_readme = TRUE; data->encode_header = TRUE; data->encode_readme = TRUE; data->include_sort = TRUE; data->exclude_suffix = g_ptr_array_new(); data->exclude_prefix = g_ptr_array_new(); data->content_type = g_string_new("text/html; charset=utf-8"); LI_VALUE_FOREACH(entry, val) liValue *entryKey = li_value_list_at(entry, 0); liValue *entryValue = li_value_list_at(entry, 1); GString *entryKeyStr; if (LI_VALUE_STRING != li_value_type(entryKey)) { ERROR(srv, "%s", "dirlist doesn't take default keys"); dirlist_free(srv, data); return NULL; } entryKeyStr = entryKey->data.string; /* keys are either NONE or STRING */ /* TODO: check for duplicate keys? */ if (g_str_equal(entryKeyStr->str, "sort")) { /* "name", "size" or "type" */ if (LI_VALUE_STRING != li_value_type(entryValue)) { ERROR(srv, "%s", "dirlist: sort parameter must be a string"); dirlist_free(srv, data); return NULL; } /* TODO */ WARNING(srv, "%s", "dirlist: sort parameter not supported yet!"); } else if (g_str_equal(entryKeyStr->str, "css")) { if (LI_VALUE_STRING != li_value_type(entryValue)) { ERROR(srv, "%s", "dirlist: css parameter must be a string"); dirlist_free(srv, data); return NULL; } if (NULL != data->css) g_string_free(data->css, TRUE); data->css = li_value_extract_string(entryValue); } else if (g_str_equal(entryKeyStr->str, "hide-dotfiles")) { if (LI_VALUE_BOOLEAN != li_value_type(entryValue)) { ERROR(srv, "%s", "dirlist: hide-dotfiles parameter must be a boolean (true or false)"); dirlist_free(srv, data); return NULL; } data->hide_dotfiles = entryValue->data.boolean; } else if (g_str_equal(entryKeyStr->str, "hide-tildefiles")) { if (LI_VALUE_BOOLEAN != li_value_type(entryValue)) { ERROR(srv, "%s", "dirlist: hide-tildefiles parameter must be a boolean (true or false)"); dirlist_free(srv, data); return NULL; } data->hide_tildefiles = entryValue->data.boolean; } else if (g_str_equal(entryKeyStr->str, "hide-directories")) { if (LI_VALUE_BOOLEAN != li_value_type(entryValue)) { ERROR(srv, "%s", "dirlist: hide-directories parameter must be a boolean (true or false)"); dirlist_free(srv, data); return NULL; } data->hide_directories = entryValue->data.boolean; } else if (g_str_equal(entryKeyStr->str, "include-header")) { if (LI_VALUE_BOOLEAN != li_value_type(entryValue)) { ERROR(srv, "%s", "dirlist: include-header parameter must be a boolean (true or false)"); dirlist_free(srv, data); return NULL; } data->include_header = entryValue->data.boolean; } else if (g_str_equal(entryKeyStr->str, "hide-header")) { if (LI_VALUE_BOOLEAN != li_value_type(entryValue)) { ERROR(srv, "%s", "dirlist: hide-header parameter must be a boolean (true or false)"); dirlist_free(srv, data); return NULL; } data->hide_header = entryValue->data.boolean; } else if (g_str_equal(entryKeyStr->str, "encode-header")) { if (LI_VALUE_BOOLEAN != li_value_type(entryValue)) { ERROR(srv, "%s", "dirlist: encode-header parameter must be a boolean (true or false)"); dirlist_free(srv, data); return NULL; } data->encode_header = entryValue->data.boolean; } else if (g_str_equal(entryKeyStr->str, "include-readme")) { if (LI_VALUE_BOOLEAN != li_value_type(entryValue)) { ERROR(srv, "%s", "dirlist: include-readme parameter must be a boolean (true or false)"); dirlist_free(srv, data); return NULL; } data->include_readme = entryValue->data.boolean; } else if (g_str_equal(entryKeyStr->str, "hide-readme")) { if (LI_VALUE_BOOLEAN != li_value_type(entryValue)) { ERROR(srv, "%s", "dirlist: hide-readme parameter must be a boolean (true or false)"); dirlist_free(srv, data); return NULL; } data->hide_readme = entryValue->data.boolean; } else if (g_str_equal(entryKeyStr->str, "encode-readme")) { if (LI_VALUE_BOOLEAN != li_value_type(entryValue)) { ERROR(srv, "%s", "dirlist: encode-readme parameter must be a boolean (true or false)"); dirlist_free(srv, data); return NULL; } data->encode_readme = entryValue->data.boolean; } else if (g_str_equal(entryKeyStr->str, "exclude-suffix")) { if (LI_VALUE_LIST != li_value_type(entryValue)) { ERROR(srv, "%s", "dirlist: exclude-suffix parameter must be a list of strings"); dirlist_free(srv, data); return NULL; } LI_VALUE_FOREACH(suffix, entryValue) if (LI_VALUE_STRING != li_value_type(suffix)) { ERROR(srv, "%s", "dirlist: exclude-suffix parameter must be a list of strings"); dirlist_free(srv, data); return NULL; } else { g_ptr_array_add(data->exclude_suffix, li_value_extract_string(suffix)); } LI_VALUE_END_FOREACH() } else if (g_str_equal(entryKeyStr->str, "exclude-prefix")) {
int main(int argc, char **argv) { void *listen = NULL; signal(SIGINT, exit_interrupt); #ifndef WIN32 signal(SIGHUP, exit_interrupt); #endif printf("Initialising Network...\n"); lion_init(); lion_compress_level( 0 ); printf("Network Initialised.\n"); // Create an initial game printf("Initialising Socket...\n"); listen = lion_listen(&server_port, 0, 0, NULL); if (!listen) { printf("Socket Failed...\n"); master_switch = 1; } printf("Listening on port %d...\n", server_port); printf("Initialising libdirlist...\n"); if (dirlist_init(1)) { printf("libdirlist failed...\n"); master_switch = 1; } while( !master_switch ) { // If you are using rate calls, you should sleep for 1s or less. lion_poll(0, 1); // This blocks. (by choice, FYI). //printf("main\n"); } printf("\n"); printf("Releasing libdirlist...\n"); dirlist_free(); printf("Releasing Socket...\n"); if (listen) { lion_disconnect(listen); listen = NULL; } printf("Socket Released.\n"); lion_free(); printf("Network Released.\n"); printf("Done\n"); return 0; // Avoid warning }