rem: memcpy(cpus, &cpus[1], sizeof(CPUS_t));
add: if (1 == Cpu_tot) memcpy(cpus, &cpus[1], sizeof(CPUS_t));
context: static CPUS_t *refreshcpus (CPUS_t *cpus){   static FILE *fp = NULL;   int i;      /* enough for a /proc/stat CPU line (not the intr line) */   char buf[SMLBUFSIZ];      /* by opening this file once, we'll avoid the hit on minor page faults         (sorry Linux, but you'll have to close it for us) */   if (!fp) {      if (!(fp = fopen("/proc/stat", "r")))         std_err(fmtmk("Failed /proc/stat open: %s", strerror(errno)));      /* note: we allocate one more CPUS_t than Cpu_tot so that the last slot               can hold tics representing the /proc/stat cpu summary (the first               line read) -- that slot supports our View_CPUSUM toggle */      cpus = alloc_c((1 + Cpu_tot) * sizeof(CPUS_t));   }   rewind(fp);   fflush(fp);      /* first value the last slot with the cpu summary line */   if (!fgets(buf, sizeof(buf), fp)) std_err("failed /proc/stat read");   if (4 > sscanf(buf, CPU_FMTS_JUST1      , &cpus[Cpu_tot].u, &cpus[Cpu_tot].n, &cpus[Cpu_tot].s, &cpus[Cpu_tot].i, &cpus[Cpu_tot].w))         std_err("failed /proc/stat read");      /* and just in case we're 2.2.xx compiled without SMP support... */   memcpy(cpus, &cpus[1], sizeof(CPUS_t));      /* and now value each separate cpu's tics */   for (i = 0; 1 < Cpu_tot && i < Cpu_tot; i++) {#ifdef PRETEND4CPUS      rewind(fp);#endif      if (!fgets(buf, sizeof(buf), fp)) std_err("failed /proc/stat read");      if (4 > sscanf(buf, CPU_FMTS_MULTI         , &cpus[i].u, &cpus[i].n, &cpus[i].s, &cpus[i].i, &cpus[i].w))            std_err("failed /proc/stat read");   }   return cpus;}