+ OBJ(top_mem, INFO_TOP)
+ char buf[64];
+ int n;
+ if(!arg) {
+ ERR("top_mem needs arguments");
+ obj->type = OBJ_text;
+ obj->data.s = strdup("${top_mem}");
+ return;
+ }
+ if(sscanf(arg, "%63s %i", buf, &n) == 2) {
+ if(strcmp(buf, "name") == 0) {
+ obj->data.top.type = TOP_NAME;
+ }
+ else if(strcmp(buf, "cpu") == 0) {
+ obj->data.top.type = TOP_CPU;
+ }
+ else if(strcmp(buf, "pid") == 0) {
+ obj->data.top.type = TOP_PID;
+ }
+ else if(strcmp(buf, "mem") == 0) {
+ obj->data.top.type = TOP_MEM;
+ }
+ else
+ {
+ ERR("invalid arg for top");
+ return;
+ }
+ if(n < 1 || n > 10) {
+ CRIT_ERR("invalid arg for top");
+ return;
+ }
+ else {
+ obj->data.top.num = n-1;
+ top_mem = 1;
+ }
+ }
+ else {
+ ERR("invalid args given for top");
+ return;
+ }
+ END
+ OBJ(addr, INFO_NET)