Hello ,...
im working on a patch to smser (smser.sf.net)project.
since i don't how the change of static char* = " ... " to char * Iam avoiding the change in the main program .
in the program there are sevral static char varibales that need to ne changed:
orignal code :
Code:
static char* CONFDIR = "/.centericq";
i wish to change it by a function so i do the next. // since diffrent users will run the program from diffrent places .
Code:
#include <pwd.h>
#include <errno>
#include <assert>
int change_path()
{
char *path_to_home = NULL;
char *temp;
temp = CONFDIR;
path_to_home = get_home_dir();
CONFDIR = (char *) malloc ( sizeof(char) * ( strlen(path_to_home) + strlen(temp) + 1));
strcpy(CONFDIR,path_to_home);//copy the actual path to confdir
strcpy(CONFDIR + strlen (path_to_home),temp);
free(path_to_home);
return 0;
}
char* get_home_dir()
{
char *path = NULL;
int size = 0;
struct passwd *passwd; //read man file for getpuid() or
passwd = getpwuid(getuid());
size = strlen((passwd->pw_dir));
path = (char *) malloc (sizeof(char) * size);
assert(path);
strcpy(path, passwd->pw_dir); //will copy the home directory to path
/*
* maybe just returning the pw_dir ?
*/
return path;
}
p.s.
im writing from the memory so maybe i wrote some small errors (but this is the genral idea).
is it the right attiude with code changes ? (to write small functions expect changing in the main program).