[GENERAL] fmgr, C , and character arguments
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
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]