[GENERAL] fmgr, C , and character arguments

2001-03-27 Thread Joel Dudley

Hello all,
   I am having a bit of trouble getting my arguments formatted into  a
command string for system(). Here is what I have so far for code.

#include string.h
#include stdlib.h
#include "postgres.h"
#include "fmgr.h"
 
 
PG_FUNCTION_INFO_V1(ssh_exec);
 
Datum
ssh_exec(PG_FUNCTION_ARGS)
{
char*uname = PG_GETARG_CHAR(0);
char*uid = PG_GETARG_CHAR(1);
char*gid = PG_GETARG_CHAR(2);
 
strncpy(sshcmd, "/usr/local/bin/plsshexec ", 255);
strncat(sshcmd, *uname, 255);
strncat(sshcmd, " ", 255);
strncat(sshcmd, *uid, 255);
strncat(sshcmd, " ", 255);
strncat(sshcmd, *gid, 255);
system(sshcmd);
return 0;
}

I am thinking that strncpy is not a bad idea after moving to the V-1
function manager interface. As I am sure you can see I am a C hack at best.
what is the best way to format the string and make this code work? memcpy?
Thanks for reading my post.


- Joel

---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly



Re: [GENERAL] fmgr, C , and character arguments

2001-03-27 Thread Marko Kreen

On Tue, Mar 27, 2001 at 03:45:17PM -0700, Joel Dudley wrote:
 Hello all,
I am having a bit of trouble getting my arguments formatted into  a
 command string for system(). Here is what I have so far for code.
 
 #include string.h
 #include stdlib.h
 #include "postgres.h"
 #include "fmgr.h"
  
  
 PG_FUNCTION_INFO_V1(ssh_exec);
  

Try this:

Datum
ssh_exec(PG_FUNCTION_ARGS)
{
char*uname = PG_GETARG_CHAR(0);
char*uid = PG_GETARG_CHAR(1);
char*gid = PG_GETARG_CHAR(2);
 
strcpy(sshcmd, "/usr/local/bin/plsshexec ");
strncat(sshcmd, VARDATA(uname), VARSIZE(uname));
strcat(sshcmd, " ");
strncat(sshcmd, VARDATA(uid), VARSIZE(uid));
strcat(sshcmd, " ");
strncat(sshcmd, VARDATA(gid), VARSIZE(gid));
system(sshcmd);
return 0;
}

This may work, but is more to give you idea what PostgreSQL
vars are about.  I would not use such code in my projects anyway :)

I suggest you study the code in src/backend/utils/adt/varchar.c
to see examples of char/text manipulation.


-- 
marko


---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]