"%s:%d\n", s, __FILE__, __LINE__); \
break; \
} \
+ libcfs_kmem_dec((ptr), s); \
+ CDEBUG(D_MALLOC, "kfreed '" #ptr "': %d at %p (tot %d).\n", \
+ s, (ptr), atomic_read(&libcfs_kmemory)); \
if (unlikely(s > LIBCFS_VMALLOC_SIZE)) \
cfs_free_large(ptr); \
else \
cfs_free(ptr); \
- libcfs_kmem_dec((ptr), s); \
- CDEBUG(D_MALLOC, "kfreed '" #ptr "': %d at %p (tot %d).\n", \
- s, (ptr), atomic_read(&libcfs_kmemory)); \
} while (0)
/******************************************************************************/
char* fname=NULL;
int mode_set=0;
int flag_set=0;
- int file_set=0;
int c;
int save_errno;
+ int print_usage=0;
char* cloned_flags = NULL;
if (argc == 1)
cloned_flags = (char *)malloc(strlen(optarg)+1);
if (cloned_flags == NULL) {
fprintf(stderr, "Insufficient memory.\n");
- exit(-1);
+ save_errno = -1;
+ goto out;
}
strncpy(cloned_flags, optarg, strlen(optarg)+1);
if (flag_table[i].flag == -1) {
fprintf(stderr, "No such flag: %s\n",
tmp);
- exit(-1);
+ save_errno = -1;
+ goto out;
}
}
- free(cloned_flags);
#ifdef DEBUG
printf("flags = %x\n", flags);
#endif
break;
default:
fprintf(stderr, "Bad parameters.\n");
- Usage_and_abort();
+ print_usage = 1;
+ goto out;
}
}
if (optind == argc) {
fprintf(stderr, "Bad parameters.\n");
- Usage_and_abort();
+ print_usage = 1;
+ goto out;
}
fname = argv[optind];
- file_set = 1;
- if (!flag_set || !file_set) {
+ if (!flag_set) {
fprintf(stderr, "Missing flag or file-name\n");
- exit(-1);
+ save_errno = -1;
+ goto out;
}
printf(", mode=%o", mode);
printf(")\n");
close(fd);
- return 0;
+ } else {
+ fprintf(stderr, "Error in opening file \"%s\"(flags=%s",
+ fname, cloned_flags);
}
- fprintf(stderr, "Error in opening file \"%s\"(flags=%s",
- fname, cloned_flags);
if (mode_set)
fprintf(stderr, ", mode=%o", mode);
fprintf(stderr, ") %d: %s\n", save_errno, strerror(save_errno));
+out:
+ if (cloned_flags)
+ free(cloned_flags);
+ if (print_usage)
+ Usage_and_abort();
+
return save_errno;
}
+
FILE *fp;
char *path = NULL;
struct mntent *mnt = NULL;
- char mntdir[PATH_MAX] = {'\0'};
+ char *mntdir = NULL;
int ishow = 0, cooked = 0;
int c, rc = 0;
argv[0], MOUNTED, strerror(errno));
return rc;
}
+
+ if ((mntdir = malloc(PATH_MAX)) == NULL) {
+ fprintf(stderr, "error: cannot allocate %d bytes\n",
+ PATH_MAX);
+ return -ENOMEM;
+ }
+ memset(mntdir, 0, PATH_MAX);
+
if (path) {
- rc = path2mnt(path, fp, mntdir, sizeof(mntdir));
+ rc = path2mnt(path, fp, mntdir, PATH_MAX);
if (rc) {
endmntent(fp);
+ free(mntdir);
return rc;
}
endmntent(fp);
}
+ free(mntdir);
return rc;
}