r21082: Make canonicalize_path static to service.c -- we do have conn->connectpath
authorVolker Lendecke <vlendec@samba.org>
Wed, 31 Jan 2007 13:09:07 +0000 (13:09 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:17:34 +0000 (12:17 -0500)
(This used to be commit 06f58096e3785d0e2e0b9f2053d4975e44568e15)

source3/smbd/notify_fam.c
source3/smbd/notify_hash.c
source3/smbd/service.c
source3/smbd/vfs.c

index aba1f5dcb30d7678392ad07ba3768859094fb6fd..08dc4eabb0cc2ab20a762f8208080d6d3012635f 100644 (file)
@@ -189,7 +189,6 @@ static void *fam_notify_add(TALLOC_CTX *mem_ctx,
                            files_struct *fsp, uint32 *filter)
 {
        struct fam_notify_ctx *ctx;
-       pstring fullpath;
 
        if ((*filter & FILE_NOTIFY_CHANGE_FILE_NAME) == 0) {
                DEBUG(10, ("filter = %u, no FILE_NOTIFY_CHANGE_FILE_NAME\n",
@@ -197,21 +196,6 @@ static void *fam_notify_add(TALLOC_CTX *mem_ctx,
                return NULL;
        }
 
-       /* FAM needs an absolute pathname. */
-
-       pstrcpy(fullpath, fsp->fsp_name);
-       if (!canonicalize_path(fsp->conn, fullpath)) {
-               DEBUG(0, ("failed to canonicalize path '%s'\n", fullpath));
-               return NULL;
-       }
-
-       if (*fullpath != '/') {
-               DEBUG(0, ("canonicalized path '%s' into `%s`\n", fsp->fsp_name,
-                         fullpath));
-               DEBUGADD(0, ("but expected an absolute path\n"));
-               return NULL;
-       }
-       
        if (!(ctx = TALLOC_P(mem_ctx, struct fam_notify_ctx))) {
                return NULL;
        }
@@ -226,8 +210,9 @@ static void *fam_notify_add(TALLOC_CTX *mem_ctx,
 
        ctx->filter = FILE_NOTIFY_CHANGE_FILE_NAME;
 
-       if (!(ctx->path = talloc_strdup(ctx, fullpath))) {
-               DEBUG(0, ("talloc_strdup failed\n"));
+       if (!(ctx->path = talloc_asprintf(ctx, "%s/%s", fsp->conn->connectpath,
+                                         fsp->fsp_name))) {
+               DEBUG(0, ("talloc_asprintf failed\n"));
                TALLOC_FREE(ctx);
                return NULL;
        }
index 5f563419bddc54945e036399bed26f0f48b04115..2cd8fbc6bc06651c61dfa54bf07597e56006b2d1 100644 (file)
@@ -222,7 +222,6 @@ static void *hash_notify_add(TALLOC_CTX *mem_ctx,
 {
        struct hash_notify_ctx *ctx;
        int timeout = lp_change_notify_timeout(SNUM(fsp->conn));
-       pstring fullpath;
 
        if (timeout <= 0) {
                /* It change notify timeout has been disabled, never scan the
@@ -230,26 +229,14 @@ static void *hash_notify_add(TALLOC_CTX *mem_ctx,
                return NULL;
        }
 
-       pstrcpy(fullpath, fsp->fsp_name);
-       if (!canonicalize_path(fsp->conn, fullpath)) {
-               DEBUG(0, ("failed to canonicalize path '%s'\n", fullpath));
-               return NULL;
-       }
-
-       if (*fullpath != '/') {
-               DEBUG(0, ("canonicalized path '%s' into `%s`\n", fsp->fsp_name,
-                         fullpath));
-               DEBUGADD(0, ("but expected an absolute path\n"));
-               return NULL;
-       }
-       
        if (!(ctx = TALLOC_P(mem_ctx, struct hash_notify_ctx))) {
                DEBUG(0, ("talloc failed\n"));
                return NULL;
        }
 
-       if (!(ctx->path = talloc_strdup(ctx, fullpath))) {
-               DEBUG(0, ("talloc_strdup failed\n"));
+       if (!(ctx->path = talloc_asprintf(ctx, "%s/%s", fsp->conn->connectpath,
+                                         fsp->fsp_name))) {
+               DEBUG(0, ("talloc_asprintf failed\n"));
                TALLOC_FREE(ctx);
                return NULL;
        }
index 9efe63a82c1552230d06533c33a7952d381a7a65..ff6f9d1c1a68d95d9c04306db0dd05f5a7531bac 100644 (file)
 
 extern userdom_struct current_user_info;
 
+BOOL canonicalize_path(connection_struct *conn, pstring path)
+{
+#ifdef REALPATH_TAKES_NULL
+       char *resolved_name = SMB_VFS_REALPATH(conn,path,NULL);
+       if (!resolved_name) {
+               return False;
+       }
+       pstrcpy(path, resolved_name);
+       SAFE_FREE(resolved_name);
+       return True;
+#else
+#ifdef PATH_MAX
+        char resolved_name_buf[PATH_MAX+1];
+#else
+        pstring resolved_name_buf;
+#endif
+       char *resolved_name = SMB_VFS_REALPATH(conn,path,resolved_name_buf);
+       if (!resolved_name) {
+               return False;
+       }
+       pstrcpy(path, resolved_name);
+       return True;
+#endif /* REALPATH_TAKES_NULL */
+}
+
 /****************************************************************************
  Ensure when setting connectpath it is a canonicalized (no ./ // or ../)
  absolute path stating in / and not ending in /.
index 643c48cd27c1f963d7e2e2675e9ebe8f1a326e51..df81b2936d4c97f58754794b065b4dbb99ccec1b 100644 (file)
@@ -792,31 +792,6 @@ char *vfs_GetWd(connection_struct *conn, char *path)
        return (path);
 }
 
-BOOL canonicalize_path(connection_struct *conn, pstring path)
-{
-#ifdef REALPATH_TAKES_NULL
-       char *resolved_name = SMB_VFS_REALPATH(conn,path,NULL);
-       if (!resolved_name) {
-               return False;
-       }
-       pstrcpy(path, resolved_name);
-       SAFE_FREE(resolved_name);
-       return True;
-#else
-#ifdef PATH_MAX
-        char resolved_name_buf[PATH_MAX+1];
-#else
-        pstring resolved_name_buf;
-#endif
-       char *resolved_name = SMB_VFS_REALPATH(conn,path,resolved_name_buf);
-       if (!resolved_name) {
-               return False;
-       }
-       pstrcpy(path, resolved_name);
-       return True;
-#endif /* REALPATH_TAKES_NULL */
-}
-
 /*******************************************************************
  Reduce a file name, removing .. elements and checking that
  it is below dir in the heirachy. This uses realpath.