#define HEXA 16
#define PERM_LEN 5
+#define PERM_LEN_DEC 4
#ifdef ARCH_64
#define ADDR_LEN 10
+#define ADDR_LEN_DOUBLE 20
+#define ADDR_LEN_DOUBLE_DEC 19
#else
#define ADDR_LEN 8
+#define ADDR_LEN_DOUBLE 16
+#define ADDR_LEN_DOUBLE_DEC 15
#endif
#define INFO_LEN 20
+#define INFO_LEN_DEC 19
#define VALUE_LEN 24
+#define VALUE_LEN_DEC 23
#define TIME_MAX_LEN 64
#define FILE_LEN 255
#define BUF_SIZE (BUFSIZ)
#define FUNC_NAME_MAX_LEN 128
#define PATH_LEN (FILE_LEN + NAME_MAX)
+#define STRING_FORMAT_SPECIFIER_WITH_MACRO(macro) "%"#macro"s"
+#define STR_FS(macro) STRING_FORMAT_SPECIFIER_WITH_MACRO(macro)
+
#define KB(bytes) ((bytes)/1024)
/* permission for open file */
long *saddr;
long *eaddr;
char perm[PERM_LEN];
- char path[PATH_LEN];
+ char path[PATH_MAX + 1];
char addr[ADDR_LEN * 2];
char linebuf[BUF_SIZE];
struct addr_node *head = NULL;
/* parsing the maps to get executable code address */
while (fgets_fd(linebuf, BUF_SIZE, fd) != NULL) {
- memset(path, 0, PATH_LEN);
- result = sscanf(linebuf, "%s %s %*s %*s %*s %s ", addr, perm, path);
+ memset(path, 0, PATH_MAX + 1);
+ result = sscanf(linebuf, STR_FS(ADDR_LEN_DOUBLE_DEC)
+ STR_FS(PERM_LEN_DEC)
+ "%*s %*s %*s"
+ STR_FS(PATH_MAX), addr, perm, path);
if (result < 0)
continue;
perm[PERM_LEN - 1] = 0;
pid_t pid;
pid_t tid;
DIR *dir;
- struct dirent *dentry=NULL;
+ struct dirent *dentry = NULL;
char timestr[TIME_MAX_LEN];
char processname[NAME_MAX] = {0,};
char exepath[PATH_LEN] = {0,};
fprintf(stderr, "[sys-assert]can't open %s\n", MEMINFO_PATH);
} else {
while (fgets_fd(linebuf, BUF_SIZE, fd) != NULL) {
- sscanf(linebuf, "%s %s %*s", infoname, value);
+ sscanf(linebuf, STR_FS(INFO_LEN_DEC)
+ STR_FS(VALUE_LEN_DEC)
+ "%*s", infoname, value);
if (strcmp("Cached:", infoname) == 0) {
fprintf_fd(fd_cs, "%s %8s KB\n", infoname, value);
break;
fprintf(stderr, "[sys-assert]can't open %s\n", STATUS_PATH);
} else {
while (fgets_fd(linebuf, BUF_SIZE, fd) != NULL) {
- sscanf(linebuf, "%s %s %*s", infoname, value);
+ sscanf(linebuf, STR_FS(INFO_LEN_DEC)
+ STR_FS(VALUE_LEN_DEC)
+ "%*s", infoname, value);
if (strcmp("VmPeak:", infoname) == 0) {
fprintf_fd(fd_cs, "%s %8s KB\n", infoname,
value);