summaryrefslogtreecommitdiffstats
path: root/sfshare-daemon
diff options
context:
space:
mode:
authorJan Lipovsky <janlipovsky@gmail.com>2010-04-21 16:32:18 +0200
committerJan Lipovsky <janlipovsky@gmail.com>2010-04-21 16:32:18 +0200
commit6c262474707c3a63e0395d424e3758a3043ac99b (patch)
tree2f2801e0fe784ecf327e9146986107ad80b7680a /sfshare-daemon
parentaa7ffad7d63b0ed92c1a20f1a8ec4eec8688aec5 (diff)
downloadsfshare-6c262474707c3a63e0395d424e3758a3043ac99b.tar.gz
sfshare-6c262474707c3a63e0395d424e3758a3043ac99b.tar.xz
sfshare-6c262474707c3a63e0395d424e3758a3043ac99b.zip
Code clean, gui ui, deamon send errors
Diffstat (limited to 'sfshare-daemon')
-rw-r--r--sfshare-daemon/src/dbus_service.c4
-rw-r--r--sfshare-daemon/src/samba_share.c28
-rw-r--r--sfshare-daemon/src/sfshare_errors.h1
3 files changed, 31 insertions, 2 deletions
diff --git a/sfshare-daemon/src/dbus_service.c b/sfshare-daemon/src/dbus_service.c
index c81006d..e65aded 100644
--- a/sfshare-daemon/src/dbus_service.c
+++ b/sfshare-daemon/src/dbus_service.c
@@ -102,6 +102,10 @@ get_error_msg (Error err)
errmsg = g_strdup ("Read only is same as writable");
break;
+ case ERROR_SHARE_NAME_EXIST:
+ errmsg = g_strdup ("Share name already exist");
+ break;
+
default:
errmsg = g_strdup ("Unknow error type");
break;
diff --git a/sfshare-daemon/src/samba_share.c b/sfshare-daemon/src/samba_share.c
index 5bfd97d..d2ccac5 100644
--- a/sfshare-daemon/src/samba_share.c
+++ b/sfshare-daemon/src/samba_share.c
@@ -416,6 +416,27 @@ TSmbConfItem *is_shared_item(GPtrArray *shared_items, const gchar *path)
/*
+* True if share name exist
+*/
+gboolean
+share_name_exist (GPtrArray *shared_items, const gchar *sharename)
+{
+ TSmbConfItem *tmp;
+ int i;
+ for(i = 0; i < shared_items->len; i++)
+ {
+ tmp = g_ptr_array_index(shared_items,i);
+ if(strstr(tmp->name->str,sharename))
+ {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+
+/*
* Write new share section or change chare section defined by share parameter
*/
gint
@@ -434,13 +455,16 @@ write_share(GPtrArray *shared_items, TSmbConfItem *share)
gboolean change = FALSE;
gboolean found = FALSE;
-
item = is_shared_item(shared_items, share->path->str);
/* If item is not shared we just append it to end of smb.conf */
if(!item)
- new_share = TRUE;
+ {
+ if(share_name_exist(shared_items, share->name->str))
+ return ERROR_SHARE_NAME_EXIST;
+ new_share = TRUE;
+ }
/* smb.conf - File exist test */
if(!g_file_test(smb_conf_path, G_FILE_TEST_EXISTS))
diff --git a/sfshare-daemon/src/sfshare_errors.h b/sfshare-daemon/src/sfshare_errors.h
index c1a5b3c..2656717 100644
--- a/sfshare-daemon/src/sfshare_errors.h
+++ b/sfshare-daemon/src/sfshare_errors.h
@@ -17,6 +17,7 @@ typedef enum
ERROR_WRONG_NAME,
ERROR_WRONG_PATH,
ERROR_READONLY_WRITABLE,
+ ERROR_SHARE_NAME_EXIST,
NUM_ERRORS
} Error;