char delims[] = "=";
char *ret_result = NULL;
char *tag = NULL;
+ char *ptr = NULL;
if (tagv == NULL)
return;
for (tag = strdup(tagv[0]); tag != NULL; ) {
- ret_result = strtok(tag, delims);
+ ret_result = strtok_r(tag, delims, &ptr);
/*check tag : preload */
if (strcmp(ret_result, "preload") == 0) {
- ret_result = strtok(NULL, delims);
+ ret_result = strtok_r(NULL, delims, &ptr);
if (strcmp(ret_result, "true") == 0) {
free((void *)mfx->preload);
mfx->preload = strdup("true");
}
/*check tag : removable*/
} else if (strcmp(ret_result, "removable") == 0) {
- ret_result = strtok(NULL, delims);
+ ret_result = strtok_r(NULL, delims, &ptr);
if (strcmp(ret_result, "true") == 0){
free((void *)mfx->removable);
mfx->removable = strdup("true");
int ret;
char query[MAX_QUERY_LEN];
char *token;
+ char *tmpptr = NULL;
const char *operation;
const char *portraitimg;
const char *landscapeimg;
portraitimg = NULL;
landscapeimg = NULL;
indicatordisplay = "true"; /* default */
- token = strtok(md->value, "|");
+ token = strtok_r(md->value, "|", &tmpptr);
while (token != NULL) {
if (strcasestr(token, "portrait-effectimage=")) {
portraitimg = index(token, '=');
indicatordisplay = "true";
}
- token = strtok(NULL, "|");
+ token = strtok_r(NULL, "|", &tmpptr);
}
if (portraitimg) {
static int __parserdb_change_perm(const char *db_file, uid_t uid)
{
char buf[BUFSIZE];
+ char pwuid_buf[1024] = {0, };
char journal_file[BUFSIZE];
char *files[3];
int ret, i;
- struct passwd *userinfo = NULL;
+ struct passwd userinfo, *result = NULL;
files[0] = (char *)db_file;
files[1] = journal_file;
files[2] = NULL;
snprintf(journal_file, sizeof(journal_file), "%s%s", db_file, "-journal");
if (uid == OWNER_ROOT)
uid = GLOBAL_USER;
- userinfo = getpwuid(uid);
- if (!userinfo) {
+ ret = getpwuid_r(uid, &userinfo, &pwuid_buf, sizeof(pwuid_buf), &result);
+ if (ret != 0 || result == NULL) {
_LOGE("FAIL: user %d doesn't exist", uid);
return -1;
}
snprintf(journal_file, sizeof(journal_file), "%s%s", db_file, "-journal");
for (i = 0; files[i]; i++) {
- ret = chown(files[i], uid, userinfo->pw_gid);
+ ret = chown(files[i], uid, userinfo.pw_gid);
if (ret == -1) {
if (strerror_r(errno, buf, sizeof(buf)))
strncpy(buf, "", BUFSIZE - 1);
_LOGD("FAIL : chown %s %d.%d : %s", files[i], uid,
- userinfo->pw_gid, buf);
+ userinfo.pw_gid, buf);
return -1;
}
int ret;
char *fullpath;
char *subpath;
+ char buf[1024];
fullpath = strdup(dir);
if (fullpath == NULL)
ret = chown(dir, uid, gid);
if (ret == -1)
_LOGE("FAIL : chown %s %d.%d, because %s", dir, uid,
- gid, strerror(errno));
+ gid, strerror_r(errno, buf, sizeof(buf)));
}
free(fullpath);
int q = 0; /*quotient*/
int r = 0; /*remainder*/
DIR *dp = NULL;
- struct dirent *ep = NULL;
+ struct dirent ep, *result;
struct stat fileinfo;
char abs_filename[FILENAME_MAX] = { 0, };
retvm_if(dirname == NULL, PMINFO_R_ERROR, "dirname is NULL");
dp = opendir(dirname);
- if (dp != NULL) {
- while ((ep = readdir(dp)) != NULL) {
- if (!strcmp(ep->d_name, ".") ||
- !strcmp(ep->d_name, "..")) {
+ if (dp == NULL) {
+ _LOGE("Couldn't open the directory\n");
+ return -1;
+ }
+
+ for (ret = readdir_r(dp, &ep, &result);
+ ret == 0 && result != NULL;
+ ret = readdir_r(dp, &ep, &result)) {
+ if (!strcmp(ep.d_name, ".") ||
+ !strcmp(ep.d_name, "..")) {
+ continue;
+ }
+ snprintf(abs_filename, FILENAME_MAX, "%s/%s", dirname,
+ ep.d_name);
+ if (lstat(abs_filename, &fileinfo) < 0)
+ perror(abs_filename);
+ else {
+ if (S_ISDIR(fileinfo.st_mode)) {
+ total += fileinfo.st_size;
+ if (strcmp(ep.d_name, ".")
+ && strcmp(ep.d_name, "..")) {
+ ret = _pkgmgr_calculate_dir_size
+ (abs_filename);
+ total = total + ret;
+ }
+ } else if (S_ISLNK(fileinfo.st_mode)) {
continue;
+ } else {
+ /*It is a file. Calculate the actual
+ size occupied (in terms of 4096 blocks)*/
+ q = (fileinfo.st_size / BLOCK_SIZE);
+ r = (fileinfo.st_size % BLOCK_SIZE);
+ if (r) {
+ q = q + 1;
}
- snprintf(abs_filename, FILENAME_MAX, "%s/%s", dirname,
- ep->d_name);
- if (lstat(abs_filename, &fileinfo) < 0)
- perror(abs_filename);
- else {
- if (S_ISDIR(fileinfo.st_mode)) {
- total += fileinfo.st_size;
- if (strcmp(ep->d_name, ".")
- && strcmp(ep->d_name, "..")) {
- ret = _pkgmgr_calculate_dir_size
- (abs_filename);
- total = total + ret;
- }
- } else if (S_ISLNK(fileinfo.st_mode)) {
- continue;
- } else {
- /*It is a file. Calculate the actual
- size occupied (in terms of 4096 blocks)*/
- q = (fileinfo.st_size / BLOCK_SIZE);
- r = (fileinfo.st_size % BLOCK_SIZE);
- if (r) {
- q = q + 1;
- }
- total += q * BLOCK_SIZE;
- }
+ total += q * BLOCK_SIZE;
}
}
- (void)closedir(dp);
- } else {
- _LOGE("Couldn't open the directory\n");
- return -1;
}
+ (void)closedir(dp);
return total;
}