summaryrefslogtreecommitdiff
path: root/source3/torture/vfstest.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2007-12-04 16:56:18 -0800
committerJeremy Allison <jra@samba.org>2007-12-04 16:56:18 -0800
commitde7fd585b11413113304334dd75ba6a207ec69eb (patch)
treebfc8b1c808609b735036cc5b04971d10d61f6b91 /source3/torture/vfstest.c
parente262c41c6119957c5e4b8d5752040881021175a3 (diff)
downloadsamba-de7fd585b11413113304334dd75ba6a207ec69eb.tar.gz
samba-de7fd585b11413113304334dd75ba6a207ec69eb.tar.bz2
samba-de7fd585b11413113304334dd75ba6a207ec69eb.zip
The usual !pstring...
Jeremy. (This used to be commit b676262a781363e7be49b21817668a53cca75c2d)
Diffstat (limited to 'source3/torture/vfstest.c')
-rw-r--r--source3/torture/vfstest.c80
1 files changed, 36 insertions, 44 deletions
diff --git a/source3/torture/vfstest.c b/source3/torture/vfstest.c
index daecf3c2d1..5f673be6df 100644
--- a/source3/torture/vfstest.c
+++ b/source3/torture/vfstest.c
@@ -89,20 +89,20 @@ static char **completion_fn(const char *text, int start, int end)
return matches;
}
-static char* next_command(char** cmdstr)
+static char *next_command(TALLOC_CTX *ctx, char **cmdstr)
{
- static pstring command;
- char *p;
-
+ char *command;
+ char *p;
+
if (!cmdstr || !(*cmdstr))
return NULL;
-
+
p = strchr_m(*cmdstr, ';');
if (p)
*p = '\0';
- pstrcpy(command, *cmdstr);
+ command = talloc_strdup(ctx, *cmdstr);
*cmdstr = p;
-
+
return command;
}
@@ -266,24 +266,22 @@ static NTSTATUS do_cmd(struct vfs_state *vfs, struct cmd_set *cmd_entry, char *c
const char *p = cmd;
char **argv = NULL;
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
- pstring buf;
- TALLOC_CTX *mem_ctx = NULL;
+ char *buf;
+ TALLOC_CTX *mem_ctx = talloc_stackframe();
int argc = 0, i;
/* Count number of arguments first time through the loop then
allocate memory and strdup them. */
again:
- while(next_token(&p, buf, " ", sizeof(buf))) {
+ while(next_token_talloc(mem_ctx, &p, &buf, " ")) {
if (argv) {
argv[argc] = SMB_STRDUP(buf);
}
-
argc++;
}
-
- if (!argv) {
+ if (!argv) {
/* Create argument list */
argv = SMB_MALLOC_ARRAY(char *, argc);
@@ -294,44 +292,35 @@ static NTSTATUS do_cmd(struct vfs_state *vfs, struct cmd_set *cmd_entry, char *c
result = NT_STATUS_NO_MEMORY;
goto done;
}
-
+
p = cmd;
argc = 0;
-
+
goto again;
}
/* Call the function */
if (cmd_entry->fn) {
-
- if (mem_ctx == NULL) {
- /* Create mem_ctx */
- if (!(mem_ctx = talloc_init("do_cmd"))) {
- DEBUG(0, ("talloc_init() failed\n"));
- goto done;
- }
- }
-
/* Run command */
result = cmd_entry->fn(vfs, mem_ctx, argc, (const char **)argv);
-
} else {
fprintf (stderr, "Invalid command\n");
goto done;
}
done:
-
+
/* Cleanup */
if (argv) {
for (i = 0; i < argc; i++)
SAFE_FREE(argv[i]);
-
+
SAFE_FREE(argv);
}
-
+
+ TALLOC_FREE(mem_ctx);
return result;
}
@@ -340,19 +329,21 @@ static NTSTATUS process_cmd(struct vfs_state *vfs, char *cmd)
{
struct cmd_list *temp_list;
bool found = False;
- pstring buf;
+ char *buf;
const char *p = cmd;
NTSTATUS result = NT_STATUS_OK;
+ TALLOC_CTX *mem_ctx = talloc_stackframe();
int len = 0;
if (cmd[strlen(cmd) - 1] == '\n')
cmd[strlen(cmd) - 1] = '\0';
- if (!next_token(&p, buf, " ", sizeof(buf))) {
+ if (!next_token_talloc(mem_ctx, &p, &buf, " ")) {
+ TALLOC_FREE(mem_ctx);
return NT_STATUS_OK;
}
- /* strip the trainly \n if it exsists */
+ /* Strip the trailing \n if it exists */
len = strlen(buf);
if (buf[len-1] == '\n')
buf[len-1] = '\0';
@@ -376,6 +367,7 @@ static NTSTATUS process_cmd(struct vfs_state *vfs, char *cmd)
done:
if (!found && buf[0]) {
printf("command not found: %s\n", buf);
+ TALLOC_FREE(mem_ctx);
return NT_STATUS_OK;
}
@@ -383,6 +375,7 @@ static NTSTATUS process_cmd(struct vfs_state *vfs, char *cmd)
printf("result was %s\n", nt_errstr(result));
}
+ TALLOC_FREE(mem_ctx);
return result;
}
@@ -437,13 +430,12 @@ void reload_printers(void)
bool reload_services(bool test)
{
bool ret;
-
+
if (lp_loaded()) {
- pstring fname;
- pstrcpy(fname,lp_configfile());
+ const char *fname = lp_configfile();
if (file_exist(fname, NULL) &&
!strcsequal(fname, dyn_CONFIGFILE)) {
- pstrcpy(dyn_CONFIGFILE, fname);
+ strlcpy(dyn_CONFIGFILE, fname, sizeof(dyn_CONFIGFILE));
test = False;
}
}
@@ -454,7 +446,7 @@ bool reload_services(bool test)
return(True);
lp_killunused(conn_snum_used);
-
+
ret = lp_load(dyn_CONFIGFILE, False, False, True, True);
/* perhaps the config filename is now set */
@@ -512,6 +504,7 @@ int main(int argc, char *argv[])
static struct vfs_state vfs;
int i;
static char *filename = NULL;
+ TALLOC_CTX *frame = talloc_stackframe();
/* make sure the vars that get altered (4th field) are in
a fixed location or certain compilers complain */
@@ -574,23 +567,21 @@ int main(int argc, char *argv[])
if (cmdstr && cmdstr[0]) {
char *cmd;
char *p = cmdstr;
-
- while((cmd=next_command(&p)) != NULL) {
+
+ while((cmd=next_command(frame, &p)) != NULL) {
process_cmd(&vfs, cmd);
}
-
+
+ TALLOC_FREE(cmd);
return 0;
}
/* Loop around accepting commands */
while(1) {
- pstring prompt;
char *line;
- slprintf(prompt, sizeof(prompt) - 1, "vfstest $> ");
-
- line = smb_readline(prompt, NULL, completion_fn);
+ line = smb_readline("vfstest $> ", NULL, completion_fn);
if (line == NULL)
break;
@@ -598,7 +589,8 @@ int main(int argc, char *argv[])
if (line[0] != '\n')
process_cmd(&vfs, line);
}
-
+
conn_free(vfs.conn);
+ TALLOC_FREE(frame);
return 0;
}