示例#1
0
文件: main.c 项目: maxrake/RE-Course
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;
}
示例#2
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;
}
示例#3
0
文件: root.c 项目: lundman/llink
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();

}
示例#4
0
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")) {
示例#5
0
文件: getdirs.c 项目: lundman/lion
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

}