1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-02 09:47:23 +03:00

r25171: More pstring removal.

Jeremy.
(This used to be commit 4748d2639796e8caa67fae44d1cf660d49d82663)
This commit is contained in:
Jeremy Allison 2007-09-14 22:14:39 +00:00 committed by Gerald (Jerry) Carter
parent 3aaca8028e
commit db31df8186
2 changed files with 50 additions and 28 deletions

View File

@ -278,31 +278,41 @@ done:
Recursive routine to print out all children of a TREE_NODE
*************************************************************************/
static void pathtree_print_children( TREE_NODE *node, int debug, const char *path )
static void pathtree_print_children(TALLOC_CTX *ctx,
TREE_NODE *node,
int debug,
const char *path )
{
int i;
int num_children;
pstring path2;
char *path2 = NULL;
if ( !node )
return;
if ( node->key )
DEBUG(debug,("%s: [%s] (%s)\n", path ? path : "NULL", node->key,
node->data_p ? "data" : "NULL" ));
*path2 = '\0';
if ( path )
pstrcpy( path2, path );
pstrcat( path2, node->key ? node->key : "NULL" );
pstrcat( path2, "/" );
num_children = node->num_children;
for ( i=0; i<num_children; i++ )
pathtree_print_children( node->children[i], debug, path2 );
if ( path ) {
path2 = talloc_strdup(ctx, path);
if (!path2) {
return;
}
}
path2 = talloc_asprintf(ctx,
"%s%s/",
path ? path : "",
node->key ? node->key : "NULL");
if (!path2) {
return;
}
num_children = node->num_children;
for ( i=0; i<num_children; i++ ) {
pathtree_print_children(ctx, node->children[i], debug, path2 );
}
}
/**************************************************************************
@ -313,21 +323,23 @@ static void pathtree_print_children( TREE_NODE *node, int debug, const char *pat
{
int i;
int num_children = tree->root->num_children;
if ( tree->root->key )
DEBUG(debug,("ROOT/: [%s] (%s)\n", tree->root->key,
tree->root->data_p ? "data" : "NULL" ));
for ( i=0; i<num_children; i++ ) {
pathtree_print_children( tree->root->children[i], debug,
TALLOC_CTX *ctx = talloc_stackframe();
pathtree_print_children(ctx, tree->root->children[i], debug,
tree->root->key ? tree->root->key : "ROOT/" );
TALLOC_FREE(ctx);
}
}
/**************************************************************************
return the data_p for for the node in tree matching the key string
The key string is the full path. We must break it apart and walk
The key string is the full path. We must break it apart and walk
the tree
*************************************************************************/

View File

@ -1,18 +1,18 @@
/*
/*
Unix SMB/CIFS implementation.
run a command as a specified user
Copyright (C) Andrew Tridgell 1992-1998
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
@ -27,11 +27,19 @@ This is a utility function of smbrun().
****************************************************************************/
static int setup_out_fd(void)
{
{
int fd;
pstring path;
TALLOC_CTX *ctx = talloc_stackframe();
char *path = NULL;
slprintf(path, sizeof(path)-1, "%s/smb.XXXXXX", tmpdir());
path = talloc_asprintf(ctx,
"%s/smb.XXXXXX",
tmpdir());
if (!path) {
TALLOC_FREE(ctx);
errno = ENOMEM;
return -1;
}
/* now create the file */
fd = smb_mkstemp(path);
@ -39,6 +47,7 @@ static int setup_out_fd(void)
if (fd == -1) {
DEBUG(0,("setup_out_fd: Failed to create file %s. (%s)\n",
path, strerror(errno) ));
TALLOC_FREE(ctx);
return -1;
}
@ -46,6 +55,7 @@ static int setup_out_fd(void)
/* Ensure file only kept around by open fd. */
unlink(path);
TALLOC_FREE(ctx);
return fd;
}
@ -59,7 +69,7 @@ static int smbrun_internal(const char *cmd, int *outfd, BOOL sanitize)
pid_t pid;
uid_t uid = current_user.ut.uid;
gid_t gid = current_user.ut.gid;
/*
* Lose any elevated privileges.
*/