[SCM] Samba Shared Repository - branch v3-0-test updated -
release-3-0-32-145-gdf341bd
Jeff Layton
jlayton at samba.org
Thu Feb 5 19:19:09 GMT 2009
The branch, v3-0-test has been updated
via df341bd2b83cc67e31d5b91ae39b4f4f7619ffd0 (commit)
from 7a1408f89f1addff993d1e2dfb7462d12d0a2f48 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-0-test
- Log -----------------------------------------------------------------
commit df341bd2b83cc67e31d5b91ae39b4f4f7619ffd0
Author: Shirish Pargaonkar <shirishpargaonkar at gmail.com>
Date: Thu Feb 5 14:18:36 2009 -0500
umount.cifs: clean-up entries in /etc/mtab after unmount
This patch removes the remaining entry in /etc/mtab after a filesystem
is unmounted by canonicalizing the mountpoint supplied on the command
line.
Please refer to bug 4370 in samba bugzilla.
-----------------------------------------------------------------------
Summary of changes:
source/client/umount.cifs.c | 34 +++++++++++++++++++++++++++++++++-
1 files changed, 33 insertions(+), 1 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/client/umount.cifs.c b/source/client/umount.cifs.c
index 8f2f377..6bed410 100644
--- a/source/client/umount.cifs.c
+++ b/source/client/umount.cifs.c
@@ -34,6 +34,7 @@
#include <errno.h>
#include <string.h>
#include <mntent.h>
+#include <limits.h>
#include "mount.h"
#define UNMOUNT_CIFS_VERSION_MAJOR "0"
@@ -232,6 +233,37 @@ static int remove_from_mtab(char * mountpoint)
return rc;
}
+/* Make a canonical pathname from PATH. Returns a freshly malloced string.
+ It is up the *caller* to ensure that the PATH is sensible. i.e.
+ canonicalize ("/dev/fd0/.") returns "/dev/fd0" even though ``/dev/fd0/.''
+ is not a legal pathname for ``/dev/fd0'' Anything we cannot parse
+ we return unmodified. */
+static char *
+canonicalize(char *path)
+{
+ char *canonical = malloc (PATH_MAX + 1);
+
+ if (!canonical) {
+ fprintf(stderr, "Error! Not enough memory!\n");
+ return NULL;
+ }
+
+ if (strlen(path) > PATH_MAX) {
+ fprintf(stderr, "Mount point string too long\n");
+ return NULL;
+ }
+
+ if (path == NULL)
+ return NULL;
+
+ if (realpath (path, canonical))
+ return canonical;
+
+ strncpy (canonical, path, PATH_MAX);
+ canonical[PATH_MAX] = '\0';
+ return canonical;
+}
+
int main(int argc, char ** argv)
{
int c;
@@ -305,7 +337,7 @@ int main(int argc, char ** argv)
argv += optind;
argc -= optind;
- mountpoint = argv[0];
+ mountpoint = canonicalize(argv[0]);
if((argc < 1) || (argv[0] == NULL)) {
printf("\nMissing name of unmount directory\n");
--
Samba Shared Repository
More information about the samba-cvs
mailing list