diff --git a/sflphone-common/src/main.cpp b/sflphone-common/src/main.cpp index f20d721611763f170c51ce0196905fca098486ca..fe01b911cc69c617cad8479a0ae0bbeedb9c5075 100644 --- a/sflphone-common/src/main.cpp +++ b/sflphone-common/src/main.cpp @@ -60,13 +60,24 @@ main (int argc, char **argv) unsigned int iPid = getpid(); char cPid[64], cOldPid[64]; sprintf (cPid,"%d", iPid); + std::string xdg_config, xdg_env, path; - // TODO Use $XDG_CACHE_HOME instead of $HOME - sprintf (homepid, "%s/.%s/%s", HOMEDIR, PROGDIR, PIDFILE); - sprintf (sfldir, "%s/.%s", HOMEDIR, PROGDIR); + xdg_config = std::string (HOMEDIR) + DIR_SEPARATOR_STR + ".cache/sflphone"; + + if (XDG_CACHE_HOME != NULL) + { + xdg_env = std::string (XDG_CACHE_HOME); + (xdg_env.length() > 0) ? path = xdg_env + : path = xdg_config; + } + else + path = xdg_config; + + sprintf (sfldir, "%s", path.c_str ()); + sprintf (homepid, "%s/%s", path.c_str (), PIDFILE); if ( (fp = fopen (homepid,"r")) == NULL) { - // Check if $HOME/.sflphone directory exists or not. + // Check if $XDG_CACHE_HOME directory exists or not. DIR *dir; if ( (dir = opendir (sfldir)) == NULL) { @@ -95,6 +106,8 @@ main (int argc, char **argv) else { fclose (fp); + _debug ("SDLauiobvzsfivbsfivbsuobvsobvasbvfasdkbvkdbvbvksdbvksdbvkzsdbvasdfb: %i\n", atoi (cOldPid)); + if (kill (atoi (cOldPid), 0) == SUCCESS) { fprintf (stderr, "There is already a sflphoned daemon running in the system. Starting Failed.\n"); exit (-1);