status-mem/mem.c
changeset 15 163e96e2b941
parent 13 d7ce3b1dddc4
equal deleted inserted replaced
14:fa82d67af1ea 15:163e96e2b941
    20             exit(1);
    20             exit(1);
    21         }
    21         }
    22 
    22 
    23         int free = 0;
    23         int free = 0;
    24         int total = 0;
    24         int total = 0;
       
    25         int avail = -1;
    25         int sub;
    26         int sub;
    26         while (!feof(fd)) {
    27         while (!feof(fd)) {
    27             if (fgets(line, sizeof(line)-1, fd) == NULL)
    28             if (fgets(line, sizeof(line)-1, fd) == NULL)
    28                 break;
    29                 break;
    29 
    30 
    31                 sscanf(line+9, "%*[ ]%d%*[^\n]", &total);
    32                 sscanf(line+9, "%*[ ]%d%*[^\n]", &total);
    32 
    33 
    33             if (!strncmp(line, "MemFree", 7))
    34             if (!strncmp(line, "MemFree", 7))
    34                 sscanf(line+8, "%*[ ]%d%*[^\n]", &free);
    35                 sscanf(line+8, "%*[ ]%d%*[^\n]", &free);
    35 
    36 
       
    37             if (!strncmp(line, "MemAvailable", 12)) {
       
    38                 sscanf(line+13, "%*[ ]%d%*[^\n]", &sub);
       
    39                 avail = sub;
       
    40             }
       
    41 
    36             if (!strncmp(line, "Buffers", 7)) {
    42             if (!strncmp(line, "Buffers", 7)) {
    37                 sscanf(line+8, "%*[ ]%d%*[^\n]", &sub);
    43                 sscanf(line+8, "%*[ ]%d%*[^\n]", &sub);
    38                 free += sub;
    44                 free += sub;
    39             }
    45             }
    40             if (!strncmp(line, "Cached", 6)) {
    46             if (!strncmp(line, "Cached", 6)) {
    41                 sscanf(line+7, "%*[ ]%d%*[^\n]", &sub);
    47                 sscanf(line+7, "%*[ ]%d%*[^\n]", &sub);
    42                 free += sub;
    48                 free += sub;
    43             }
    49             }
    44         }
    50         }
    45         fclose(fd);
    51         fclose(fd);
    46 
    52         if (avail != -1) free = avail;
    47         int used = total - free;
    53         int used = total - free;
    48 
    54 
    49 #ifdef PANGO_MARKUP
    55 #ifdef PANGO_MARKUP
    50         char *color;
    56         char *color;
    51         if (used*1.0/total < GREEN) color = "color='#0f0'";
    57         if (used*1.0/total < GREEN) color = "color='#0f0'";