From: <enl...@li...> - 2001-03-21 10:11:16
|
Enlightenment CVS committal Author : cpk Project : e17 Module : apps/efsd Dir : e17/apps/efsd/efsd Modified Files: Makefile.am efsd_fileops.c efsd_magic.c efsd_misc.c efsd_misc.h efsd_queue.c efsd_types.c libefsd.c Added Files: efsd_main.c efsd_main.h Removed Files: efsd_common.c efsd_common.h Log Message: Cleanups ... =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/efsd/efsd/Makefile.am,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- Makefile.am 2001/03/20 21:10:26 1.10 +++ Makefile.am 2001/03/21 10:11:14 1.11 @@ -12,10 +12,9 @@ libefsd.h efsd_SOURCES = \ - efsd.c \ + efsd_main.h \ + efsd_main.c \ efsd_macros.h \ - efsd_common.h \ - efsd_common.c \ efsd_debug.h \ efsd_debug.c \ efsd_fam.h \ @@ -45,12 +44,12 @@ libefsd_la_SOURCES = \ efsd.h \ efsd_macros.h \ - efsd_common.h \ - efsd_common.c \ efsd_debug.h \ efsd_debug.c \ efsd_io.h \ efsd_io.c \ + efsd_misc.h \ + efsd_misc.c \ efsd_options.h \ efsd_options.c \ efsd_types.h \ =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/efsd/efsd/efsd_fileops.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- efsd_fileops.c 2001/03/20 21:10:27 1.9 +++ efsd_fileops.c 2001/03/21 10:11:14 1.10 @@ -38,7 +38,6 @@ #include <unistd.h> #include <signal.h> -#include <efsd_common.h> #include <efsd_debug.h> #include <efsd_fam.h> #include <efsd_fileops.h> @@ -46,6 +45,7 @@ #include <efsd_io.h> #include <efsd_macros.h> #include <efsd_magic.h> +#include <efsd_main.h> #include <efsd_misc.h> #include <efsd_queue.h> #include <efsd_types.h> @@ -82,7 +82,7 @@ if (efsd_io_write_event(sockfd, &ee) < 0) { if (errno == EPIPE) - efsd_misc_close_connection(client); + efsd_main_close_connection(client); else efsd_queue_add_event(sockfd, &ee); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/efsd/efsd/efsd_magic.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- efsd_magic.c 2001/03/20 23:19:05 1.11 +++ efsd_magic.c 2001/03/21 10:11:14 1.12 @@ -47,7 +47,6 @@ #include <efsd_macros.h> #include <efsd_debug.h> #include <efsd_misc.h> -#include <efsd_common.h> #include <efsd_magic.h> @@ -200,7 +199,7 @@ if (s[0] != '\0') D_RETURN_(s); - snprintf(s, sizeof(s), "%s/magic.db", efsd_common_get_sys_dir()); + snprintf(s, sizeof(s), "%s/magic.db", efsd_misc_get_sys_dir()); s[sizeof(s)-1] = '\0'; if (efsd_misc_file_exists(s)) @@ -220,7 +219,7 @@ if (s[0] != '\0') D_RETURN_(s); - snprintf(s, sizeof(s), "%s/pattern.db", efsd_common_get_sys_dir()); + snprintf(s, sizeof(s), "%s/pattern.db", efsd_misc_get_sys_dir()); s[sizeof(s)-1] = '\0'; if (efsd_misc_file_exists(s)) @@ -240,7 +239,7 @@ if (s[0] != '\0') D_RETURN_(s); - snprintf(s, sizeof(s), "%s/pattern.db", efsd_common_get_user_dir()); + snprintf(s, sizeof(s), "%s/pattern.db", efsd_misc_get_user_dir()); s[sizeof(s)-1] = '\0'; if (efsd_misc_file_exists(s)) =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/efsd/efsd/efsd_misc.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- efsd_misc.c 2001/03/20 21:10:38 1.12 +++ efsd_misc.c 2001/03/21 10:11:14 1.13 @@ -40,7 +40,7 @@ #include <malloc.h> #endif -#include <efsd_common.h> +#include <efsd_misc.h> #include <efsd_debug.h> #include <efsd_fam.h> #include <efsd_globals.h> @@ -268,7 +268,7 @@ { D_ENTER; - if (unlink(efsd_common_get_socket_file()) < 0) + if (unlink(efsd_misc_get_socket_file()) < 0) { if (errno != ENOENT) { @@ -283,23 +283,83 @@ D_RETURN; } + +char * +efsd_misc_get_user_dir(void) +{ + char *dir = NULL; + static char s[4096] = "\0"; + + D_ENTER; + + if (s[0] != '\0') + D_RETURN_(s); + + dir = getenv("HOME"); + + /* I'm not using getenv("TMPDIR") -- + * I don't see TMPDIR on Linux, FreeBSD + * or Solaris here... + */ + + /* FIXME -- I need to properly handle the case + where I cannot determine the home directory. + This will break if multiple users run E on the + same machine: + */ + + if (!dir) + dir = "/tmp"; + + snprintf(s, sizeof(s), "%s/.e/efsd", dir); + + D_RETURN_(s); +} + + +char * +efsd_misc_get_sys_dir(void) +{ + D_ENTER; + D_RETURN_(PACKAGE_DATA_DIR); +} + + +char * +efsd_misc_get_socket_file(void) +{ + static char s[4096] = "\0"; + + D_ENTER; + + if (s[0] != '\0') + D_RETURN_(s); +#ifndef __EMX__ + snprintf(s, sizeof(s), "%s/efsd_socket", efsd_misc_get_user_dir()); +#else + snprintf(s, sizeof(s), "\\socket\\%s/efsd_socket", efsd_misc_get_user_dir()); +#endif + s[sizeof(s)-1] = '\0'; + D_RETURN_(s); +} + -int -efsd_misc_close_connection(int client) +void * +efsd_misc_memdup(void *data, int size) { + void *result = NULL; + D_ENTER; - D(("Closing connection %i\n", client)); - if (clientfd[client] < 0) + if (!data) { - D(("Connection already closed ???\n")); - D_RETURN_(-1); + D_RETURN_(NULL); } - efsd_fam_cleanup_client(client); - close(clientfd[client]); - clientfd[client] = -1; - D_RETURN_(0); + result = malloc(size); + memcpy(result, data, size); + + D_RETURN_(result); } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/efsd/efsd/efsd_misc.h,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- efsd_misc.h 2001/03/20 21:10:38 1.10 +++ efsd_misc.h 2001/03/21 10:11:14 1.11 @@ -40,4 +40,11 @@ void efsd_misc_remove_socket_file(void); int efsd_misc_close_connection(int client); +char *efsd_misc_get_user_dir(void); +char *efsd_misc_get_sys_dir(void); +char *efsd_misc_get_socket_file(void); + +/* Could somebody tell me if memdup() is portable? */ +void *efsd_misc_memdup(void *data, int size); + #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/efsd/efsd/efsd_queue.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- efsd_queue.c 2001/03/20 21:10:38 1.4 +++ efsd_queue.c 2001/03/21 10:11:14 1.5 @@ -42,6 +42,7 @@ #include <efsd_globals.h> #include <efsd_macros.h> #include <efsd_io.h> +#include <efsd_main.h> #include <efsd_misc.h> #include <efsd_list.h> #include <efsd_types.h> @@ -115,7 +116,7 @@ if (errno == EPIPE) { D(("Client %i died -- closing connection\n", eqi->client)); - efsd_misc_close_connection(eqi->client); + efsd_main_close_connection(eqi->client); queue = efsd_list_remove(queue, queue, (EfsdFunc)queue_item_free); done++; } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/efsd/efsd/efsd_types.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- efsd_types.c 2001/03/19 18:12:33 1.3 +++ efsd_types.c 2001/03/21 10:11:14 1.4 @@ -33,7 +33,7 @@ #include <efsd_debug.h> #include <efsd_misc.h> -#include <efsd_common.h> +#include <efsd_misc.h> #include <efsd_macros.h> #include <efsd_options.h> #include <efsd_types.h> @@ -71,7 +71,7 @@ break; case EFSD_CMD_SETMETA: ec_dst->efsd_set_metadata_cmd.data = - efsd_common_memdup(ec_src->efsd_set_metadata_cmd.data, ec_src->efsd_set_metadata_cmd.data_len); + efsd_misc_memdup(ec_src->efsd_set_metadata_cmd.data, ec_src->efsd_set_metadata_cmd.data_len); ec_dst->efsd_set_metadata_cmd.key = strdup(ec_src->efsd_set_metadata_cmd.key); ec_dst->efsd_set_metadata_cmd.file = strdup(ec_src->efsd_set_metadata_cmd.file); break; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/efsd/efsd/libefsd.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -3 -r1.18 -r1.19 --- libefsd.c 2001/03/20 18:43:21 1.18 +++ libefsd.c 2001/03/21 10:11:14 1.19 @@ -43,9 +43,10 @@ #include <efsd.h> #include <efsd_debug.h> #include <efsd_io.h> -#include <efsd_common.h> -#include <efsd_options.h> #include <efsd_macros.h> +#include <efsd_misc.h> +#include <efsd_options.h> +#include <efsd_types.h> #include <libefsd.h> struct efsd_connection @@ -140,19 +141,11 @@ if (send_command(ec, &cmd) < 0) { + efsd_cmd_cleanup(&cmd); D_RETURN_(-1); } - - if ((num_options > 0) && (ops)) - { - int i; - for (i = 0; i < num_options; i++) - efsd_option_cleanup(&ops[i]); - - FREE(ops); - } - + efsd_cmd_cleanup(&cmd); D_RETURN_(cmd.efsd_file_cmd.id); } @@ -172,6 +165,7 @@ cmd.efsd_2file_cmd.file1 = get_full_path(file1); cmd.efsd_2file_cmd.file2 = get_full_path(file2); + efsd_cmd_cleanup(&cmd); D_RETURN_(cmd.efsd_2file_cmd.id); } @@ -200,7 +194,7 @@ bzero(&cli_sun, sizeof(cli_sun)); cli_sun.sun_family = AF_UNIX; - strncpy(cli_sun.sun_path, efsd_common_get_socket_file(), sizeof(cli_sun.sun_path)); + strncpy(cli_sun.sun_path, efsd_misc_get_socket_file(), sizeof(cli_sun.sun_path)); if (connect(ec->fd, (struct sockaddr*)&cli_sun, sizeof(cli_sun)) < 0) { @@ -419,7 +413,6 @@ EfsdCmdId efsd_chmod(EfsdConnection *ec, char *filename, mode_t mode) { - char *f; EfsdCommand cmd; D_ENTER; @@ -430,9 +423,7 @@ cmd.type = EFSD_CMD_CHMOD; cmd.efsd_chmod_cmd.id = get_next_id(); cmd.efsd_chmod_cmd.mode = mode; - f = get_full_path(filename); - cmd.efsd_chmod_cmd.file = strdup(f); - free(f); + cmd.efsd_chmod_cmd.file = get_full_path(filename); if (send_command(ec, &cmd) < 0) { @@ -446,7 +437,6 @@ efsd_set_metadata(EfsdConnection *ec, char *key, char *filename, EfsdDatatype datatype, int data_len, void *data) { - char *f; EfsdCommand cmd; D_ENTER; @@ -461,14 +451,21 @@ cmd.efsd_set_metadata_cmd.data_len = data_len; cmd.efsd_set_metadata_cmd.data = data; cmd.efsd_set_metadata_cmd.key = strdup(key); - f = get_full_path(filename); - cmd.efsd_set_metadata_cmd.file = strdup(f); - free(f); + cmd.efsd_set_metadata_cmd.file = get_full_path(filename); + + if (!efsd_misc_file_exists(cmd.efsd_get_metadata_cmd.file)) + { + efsd_cmd_cleanup(&cmd); + D_RETURN_(-1); + } if (send_command(ec, &cmd) < 0) { + efsd_cmd_cleanup(&cmd); D_RETURN_(-1); } + + efsd_cmd_cleanup(&cmd); D_RETURN_(cmd.efsd_set_metadata_cmd.id); } @@ -476,7 +473,6 @@ EfsdCmdId efsd_get_metadata(EfsdConnection *ec, char *key, char *filename) { - char *f; EfsdCommand cmd; D_ENTER; @@ -488,14 +484,21 @@ cmd.type = EFSD_CMD_GETMETA; cmd.efsd_get_metadata_cmd.id = get_next_id(); cmd.efsd_get_metadata_cmd.key = strdup(key); - f = get_full_path(filename); - cmd.efsd_get_metadata_cmd.file = strdup(f); - free(f); + cmd.efsd_get_metadata_cmd.file = get_full_path(filename); + + if (!efsd_misc_file_exists(cmd.efsd_get_metadata_cmd.file)) + { + efsd_cmd_cleanup(&cmd); + D_RETURN_(-1); + } if (send_command(ec, &cmd) < 0) { + efsd_cmd_cleanup(&cmd); D_RETURN_(-1); } + + efsd_cmd_cleanup(&cmd); D_RETURN_(cmd.efsd_get_metadata_cmd.id); } |