145 // |
145 // |
146 static char* get_user_tmp_dir(const char* user) { |
146 static char* get_user_tmp_dir(const char* user) { |
147 |
147 |
148 const char* tmpdir = os::get_temp_directory(); |
148 const char* tmpdir = os::get_temp_directory(); |
149 const char* perfdir = PERFDATA_NAME; |
149 const char* perfdir = PERFDATA_NAME; |
150 size_t nbytes = strlen(tmpdir) + strlen(perfdir) + strlen(user) + 2; |
150 size_t nbytes = strlen(tmpdir) + strlen(perfdir) + strlen(user) + 3; |
151 char* dirname = NEW_C_HEAP_ARRAY(char, nbytes); |
151 char* dirname = NEW_C_HEAP_ARRAY(char, nbytes); |
152 |
152 |
153 // construct the path name to user specific tmp directory |
153 // construct the path name to user specific tmp directory |
154 snprintf(dirname, nbytes, "%s%s_%s", tmpdir, perfdir, user); |
154 snprintf(dirname, nbytes, "%s/%s_%s", tmpdir, perfdir, user); |
155 |
155 |
156 return dirname; |
156 return dirname; |
157 } |
157 } |
158 |
158 |
159 // convert the given file name into a process id. if the file |
159 // convert the given file name into a process id. if the file |
320 if (strncmp(dentry->d_name, PERFDATA_NAME, strlen(PERFDATA_NAME)) != 0) { |
320 if (strncmp(dentry->d_name, PERFDATA_NAME, strlen(PERFDATA_NAME)) != 0) { |
321 continue; |
321 continue; |
322 } |
322 } |
323 |
323 |
324 char* usrdir_name = NEW_C_HEAP_ARRAY(char, |
324 char* usrdir_name = NEW_C_HEAP_ARRAY(char, |
325 strlen(tmpdirname) + strlen(dentry->d_name) + 1); |
325 strlen(tmpdirname) + strlen(dentry->d_name) + 2); |
326 strcpy(usrdir_name, tmpdirname); |
326 strcpy(usrdir_name, tmpdirname); |
|
327 strcat(usrdir_name, "/"); |
327 strcat(usrdir_name, dentry->d_name); |
328 strcat(usrdir_name, dentry->d_name); |
328 |
329 |
329 DIR* subdirp = os::opendir(usrdir_name); |
330 DIR* subdirp = os::opendir(usrdir_name); |
330 |
331 |
331 if (subdirp == NULL) { |
332 if (subdirp == NULL) { |