diff options
author | Ludovic Courtès <ludo@gnu.org> | 2012-03-04 17:07:47 +0000 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2012-03-04 17:07:47 +0000 |
commit | adf8bbf12dfe48f962fb498879c30b0816f76086 (patch) | |
tree | 7f6a8ee1cae14a3293dded7ef67e5b520b3a90b4 /smbnetfs.c | |
parent | 9cfe1f79fb0a419a2bd681647c39b1b9bcedbb6c (diff) |
Use `asprintf' instead of `malloc' + `sprintf'.
Diffstat (limited to 'smbnetfs.c')
-rw-r--r-- | smbnetfs.c | 107 |
1 files changed, 32 insertions, 75 deletions
diff --git a/smbnetfs.c b/smbnetfs.c index 6ff6d0bc5..643080566 100644 --- a/smbnetfs.c +++ b/smbnetfs.c @@ -1,6 +1,8 @@ /* Copyright (C) 1997, 2002, 2004, 2007, 2009 Free Software Foundation, Inc. Copyright (C) 2004, 2007, 2009 Giuseppe Scrivano. + Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org> + Written by Giuseppe Scrivano <gscrivano@gnu.org> This program is free software; you can redistribute it and/or @@ -158,16 +160,14 @@ create_root_node () struct node *node; int err = create_node (&node); if (err) - return; + return; + netfs_root_node = node; node->nn->parent = 0; - node->nn->filename = malloc (strlen (credentials.share) + 1); - if (node->nn->filename) - strcpy (node->nn->filename, credentials.share); - + node->nn->filename = strdup (credentials.share); + netfs_validate_stat (node, 0); - - } +} static int @@ -196,11 +196,7 @@ add_node (char *filename, struct node *top ,struct netnode** nn) else n->parent = 0; - n->filename = malloc ( strlen(top->nn->filename) + strlen (filename) + 1); - if (!n->filename) - return 0; - - sprintf (n->filename, "%s/%s", top->nn->filename, filename); + asprintf (&n->filename, "%s/%s", top->nn->filename, filename); mutex_lock (&smb_mutex); err = smbc_stat (n->filename, &st); @@ -470,18 +466,13 @@ netfs_attempt_unlink (struct iouser * user, struct node * dir, char *name) char *filename; if (dir->nn->filename) - filename = malloc (strlen (dir->nn->filename) + strlen (name) + 2); + asprintf (&filename, "%s/%s", dir->nn->filename, name); else - filename = malloc (strlen (credentials.share) + strlen (name) + 1); + asprintf (&filename, "%s/%s", credentials.share, name); if (!filename) return ENOMEM; - if (dir->nn->filename) - sprintf (filename, "%s/%s", dir->nn->filename, name); - else - sprintf (filename, "%s/%s", credentials.share, name); - mutex_lock (&smb_mutex); error_t err = smbc_unlink (filename); mutex_unlock (&smb_mutex); @@ -503,17 +494,17 @@ netfs_attempt_rename (struct iouser * user, struct node * fromdir, char *filename2; /* Destination file name. */ if (fromdir->nn->filename) - filename = malloc (strlen (fromdir->nn->filename) + strlen (fromname) + 2); + asprintf (&filename, "%s/%s", fromdir->nn->filename,fromname); else - filename = malloc (strlen (credentials.share) + strlen (fromname) + 1); + asprintf (&filename, "%s/%s", credentials.share, fromname); if (!filename) return ENOMEM; if (todir->nn->filename) - filename2 =malloc (strlen (todir->nn->filename) + strlen (toname) + 2); + asprintf (&filename2, "%s/%s", todir->nn->filename, toname); else - filename2 = malloc (strlen (credentials.share) + strlen (toname) + 1); + asprintf (&filename2, "%s/%s", credentials.share, toname); if (!filename2) { @@ -521,16 +512,6 @@ netfs_attempt_rename (struct iouser * user, struct node * fromdir, return ENOMEM; } - if (fromdir->nn->filename) - sprintf (filename, "%s/%s", fromdir->nn->filename,fromname); - else - sprintf (filename, "%s/%s", credentials.share, fromname); - - if (todir->nn->filename) - sprintf (filename, "%s/%s", todir->nn->filename, toname); - else - sprintf (filename, "%s/%s", credentials.share, toname); - mutex_lock (&smb_mutex); error_t err = smbc_rename (filename, filename2); mutex_unlock (&smb_mutex); @@ -548,17 +529,13 @@ netfs_attempt_mkdir (struct iouser * user, struct node * dir, char *name, error_t err; if (dir->nn->filename) - filename = malloc (strlen (dir->nn->filename) + strlen (name) + 2); + asprintf (&filename, "%s/%s", dir->nn->filename,name); else - filename = malloc (strlen (credentials.share) + strlen (name) + 1); + asprintf (&filename, "%s/%s", credentials.share, name); + if (!filename) return ENOMEM; - if (dir->nn->filename) - sprintf (filename, "%s/%s", dir->nn->filename,name); - else - sprintf (filename, "%s/%s", credentials.share, name); - mutex_lock (&smb_mutex); err = smbc_mkdir (filename, mode); mutex_unlock (&smb_mutex); @@ -574,17 +551,13 @@ netfs_attempt_rmdir (struct iouser * user, struct node * dir, char *name) error_t err; if (dir->nn->filename) - filename = malloc (strlen (dir->nn->filename) +strlen (name) + 2); + asprintf (&filename, "%s/%s", dir->nn->filename, name); else - filename = malloc (strlen (credentials.share) + strlen (name) + 1); + asprintf (&filename, "%s/%s", credentials.share, name); + if (!filename) return ENOMEM; - if (dir->nn->filename) - sprintf (filename, "%s/%s", dir->nn->filename, name); - else - sprintf (filename, "%s/%s", credentials.share, name); - mutex_lock (&smb_mutex); err = smbc_rmdir (filename); mutex_unlock (&smb_mutex); @@ -619,19 +592,15 @@ netfs_attempt_create_file (struct iouser * user, struct node * dir, *np = 0; if (dir->nn->filename) - filename = malloc ( strlen (dir->nn->filename) +strlen (name) + 2); + asprintf (&filename, "%s/%s", dir->nn->filename,name); else - filename = malloc (strlen (credentials.share) + strlen (name) + 1); + asprintf (&filename, "%s/%s", credentials.share, name); + if (!filename) return ENOMEM; - if (dir->nn->filename) - sprintf (filename, "%s/%s", dir->nn->filename,name); - else - sprintf (filename, "%s/%s", credentials.share, name); - mutex_lock (&smb_mutex); - fd = smbc_open (filename,O_WRONLY | O_CREAT , O_RDWR); + fd = smbc_open (filename, O_WRONLY | O_CREAT , O_RDWR); if (fd < 0) { mutex_unlock (&smb_mutex); @@ -963,30 +932,20 @@ netfs_get_dirents (struct iouser *cred, struct node *dir, int entry, else continue; - char *stat_file_name; - stat_file_name = malloc (strlen (dir->nn->filename) - + strlen (dirent->name) + 2); - if(!stat_file_name) - { - mutex_lock (&smb_mutex); - smbc_closedir(dd); - mutex_unlock (&smb_mutex); - return ENOMEM; - } - + char stat_file_name[strlen (dir->nn->filename) + + strlen (dirent->name) + 2]; + if (!strcmp (dirent->name, ".")) { - sprintf (stat_file_name, "%s", dir->nn->filename); + strcpy (stat_file_name, "."); mutex_lock (&smb_mutex); - err=smbc_stat (stat_file_name, &st); + err = smbc_stat (dir->nn->filename, &st); mutex_unlock (&smb_mutex); } - else if (!strcmp (dirent->name,"..")) + else if (!strcmp (dirent->name, "..")) { - if (dir->nn->parent) - sprintf (stat_file_name, "%s/%s", dir->nn->filename, dirent->name); - else - st.st_ino = 0; + st = empty_stat (cred); + st.st_mode |= S_IFDIR; } else { @@ -1003,8 +962,6 @@ netfs_get_dirents (struct iouser *cred, struct node *dir, int entry, } } - free (stat_file_name); - if (err) { mutex_lock (&smb_mutex); |