Introduction
Introduction Statistics Contact Development Disclaimer Help
Recreate the SMB context after rmdir. - susmb - mounting of SMB/CIFS shares via…
git clone git://git.codemadness.org/susmb
Log
Files
Refs
README
LICENSE
---
commit 28181b82defdd54e029e6c8fbb574df2b4179403
parent 961d7b55bb0eaca2712282c4b374c61c481df2c0
Author: Geoff Johnstone <[email protected]>
Date: Thu, 26 Feb 2009 22:11:05 +0000
Recreate the SMB context after rmdir.
Diffstat:
M Makefile | 2 +-
M conffile.c | 2 +-
M conffile.h | 2 +-
M options.c | 2 +-
M options.h | 2 +-
M password.c | 2 +-
M password.h | 2 +-
M samba30-compat.h | 2 +-
M usmb.c | 22 +++++++++++++++++++++-
M usmb.h | 4 +++-
M usmb_dir.c | 8 +++++++-
M usmb_dir.h | 2 +-
M usmb_file.c | 5 +++--
M usmb_file.h | 2 +-
M utils.c | 2 +-
M utils.h | 2 +-
M version.c | 4 ++--
M version.h | 4 ++--
M xml.c | 2 +-
M xml.h | 2 +-
20 files changed, 52 insertions(+), 23 deletions(-)
---
diff --git a/Makefile b/Makefile
@@ -1,5 +1,5 @@
# usmb - mount SMB shares via FUSE and Samba
-# Copyright (C) 2006-2008 Geoff Johnstone
+# Copyright (C) 2006-2009 Geoff Johnstone
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 3 as
diff --git a/conffile.c b/conffile.c
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
diff --git a/conffile.h b/conffile.h
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
diff --git a/options.c b/options.c
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
diff --git a/options.h b/options.h
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
diff --git a/password.c b/password.c
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
diff --git a/password.h b/password.h
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
diff --git a/samba30-compat.h b/samba30-compat.h
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* Portions of this file are taken from Samba 3.2's libsmbclient.h:
* Copyright (C) Andrew Tridgell 1998
diff --git a/usmb.c b/usmb.c
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
@@ -279,6 +279,26 @@ static bool get_context (void)
}
+bool renew_smb_context (void)
+{
+ SMBCCTX *newctx;
+
+ DEBUG (fputs ("renew_smb_context()\n", stderr));
+
+ if (!create_smb_context (domain, username, &newctx))
+ {
+ fputs ("Failed to create new SMB context.\n", stderr);
+ return false;
+ }
+
+ if (NULL != ctx)
+ destroy_smb_context (ctx, 0);
+
+ ctx = newctx;
+ return true;
+}
+
+
int main (int argc, char **argv)
{
const char *conffile, *mountid;
diff --git a/usmb.h b/usmb.h
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
@@ -17,12 +17,14 @@
#ifndef USMB_H
#define USMB_H
+ #include <stdbool.h>
#include <libsmbclient.h>
extern SMBCCTX *ctx;
char * make_url (const char *path) MUSTCHECK;
+ bool renew_smb_context (void);
/* fuse_file_info uses a uint64_t for a "File handle" */
static inline uint64_t smbcfile_to_fd (SMBCFILE *file)
diff --git a/usmb_dir.c b/usmb_dir.c
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
@@ -52,6 +52,10 @@ int usmb_rmdir (const char *dirname)
DEBUG (fprintf (stderr, "rmdir (%s)\n", url));
int ret = smbc_getFunctionRmdir (ctx) (ctx, url) ? -errno : 0;
free (url);
+
+ if (0 == ret)
+ (void)renew_smb_context();
+
return ret;
}
@@ -82,6 +86,7 @@ int usmb_readdir (const char *path UNUSED, void *h, fuse_fill…
SMBCFILE *file = fd_to_smbcfile (fi->fh);
DEBUG (fprintf (stderr, "readdir (%s, %p)\n", path, (void *)file));
+ smbc_getFunctionLseekdir (ctx) (ctx, file, 0);
while (NULL != (dirent = smbc_getFunctionReaddir (ctx) (ctx, file)))
{
@@ -105,6 +110,7 @@ int usmb_readdir (const char *path UNUSED, void *h, fuse_fi…
break;
}
+ DEBUG (fprintf (stderr, " %s\n", dirent->name));
if (1 == filler (h, dirent->name, &stbuf, 0)) /* if error */
return -1;
}
diff --git a/usmb_dir.h b/usmb_dir.h
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
diff --git a/usmb_file.c b/usmb_file.c
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
@@ -44,7 +44,8 @@ static bool fix_nlink (const char *url, struct stat *st)
if (NULL == file)
return false;
- st->st_nlink = 2;
+ // st->st_nlink = 2;
+ st->st_nlink = 0;
errno = ERANGE;
struct smbc_dirent *dirent;
diff --git a/usmb_file.h b/usmb_file.h
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
diff --git a/utils.c b/utils.c
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
diff --git a/utils.h b/utils.h
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
diff --git a/version.c b/version.c
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
@@ -33,7 +33,7 @@ void show_about (FILE *fp)
{
fprintf (fp, "usmb - mount SMB shares via FUSE and Samba\n"
"\n"
- "Copyright (C) 2006-2008 Geoff Johnstone.\n"
+ "Copyright (C) 2006-2009 Geoff Johnstone.\n"
"Licensed under the GNU General Public License.\n"
"usmb comes with ABSOLUTELY NO WARRANTY; "
"for details please see\n"
diff --git a/version.h b/version.h
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
@@ -19,7 +19,7 @@
#include <stdio.h>
- #define USMB_VERSION 0x20081220
+ #define USMB_VERSION 0x20090227
// a - alpha, b - beta, p - pre-release, s - stable
#define USMB_VERSION_STATUS 's'
diff --git a/xml.c b/xml.c
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
diff --git a/xml.h b/xml.h
@@ -1,5 +1,5 @@
/* usmb - mount SMB shares via FUSE and Samba
- * Copyright (C) 2006-2008 Geoff Johnstone
+ * Copyright (C) 2006-2009 Geoff Johnstone
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.