diff options
-rw-r--r-- | mycan.c | 28 |
1 files changed, 17 insertions, 11 deletions
@@ -47,17 +47,21 @@ int main(int argc, char **argv) struct sockaddr_can addr; struct ifreq ifr; struct can_frame frame; - // usually ~/.local/share - const char *dir=getenv("XDG_DATA_HOME"); - const char *home; - if(dir == NULL) - home=getenv("HOME"); - // /mycan.csv 10 + \0 1 = 11 - char filename[((dir == NULL)?strlen(home):strlen(dir))+11]; - if(dir == NULL) - sprintf(filename,"%s/.local/share/mycan.csv",home); - else - sprintf(filename,"%s/mycan.csv",dir); + char *filename; + { + // usually ~/.local/share + const char *dir=getenv("XDG_DATA_HOME"); + const char *str; + if(dir != NULL) + str="/mycan.csv"; + else + { + str="/.local/share/mycan.csv"; + dir=getenv("HOME"); + } + filename=malloc((strlen(dir)+strlen(str)+1)*sizeof(char)); + sprintf(filename,"%s%s",dir,str); + } can_obj_all_sre_edited_h_t obj; dbcc_time_stamp_t t, t_before; @@ -416,5 +420,7 @@ int main(int argc, char **argv) close(s); //system("sudo ifconfig can0 down"); + free(filename); + return 0; } |