On Mon, 15 Mar 2004 20:36:31 +0000 ESR <[EMAIL PROTECTED]> babbled:

> Howdy Y'all,
> 
> Heres a little patch against e16/epplets/E-MemWatch.c to make it work
> properly with 2.6 Kernels.

in cvs :)

> elemental0125
> 
> --- E-MemWatch.c.~1.15.~      Wed Jan  5 16:24:00 2000
> +++ E-MemWatch.c      Mon Mar 15 20:12:29 2004
> @@ -48,6 +48,7 @@
>  Epplet_gadget close_button, mem_bar, swap_bar, mem_label, swap_label,
> title, cfg_button;
>  int mem_val = 0, swap_val = 0;
>  int show_title = 1;
> +int kernel_2_6 = 0;
>  
>  static void timer_cb(void *data);
>  static void close_cb(void *data);
> @@ -58,7 +59,7 @@
>  timer_cb(void *data) {
>  
>    char buff[1024];
> -  unsigned long total, used, buffers, cached;
> +  unsigned long total, used, buffers, cached, free;
>  
>  #ifdef HAVE_LIBGTOP
>    int check=0;
> @@ -77,11 +78,33 @@
>      D(("Failed to open /proc/meminfo -- %s\n", strerror(errno)));
>      return;
>    }
> -  fgets(buff, sizeof(buff), fp);  /* Ignore the first line */
> -  fgets(buff, sizeof(buff), fp);
> -  sscanf(buff, "%*s %lu %lu %*u %*u %lu %lu", 
> -      &total, &used, &buffers, &cached);
> -#endif
> +
> +  if( kernel_2_6 ) {
> +    fgets(buff, sizeof(buff), fp);
> +    sscanf(buff, "%*s %lu", &total); 
> +    fgets(buff, sizeof(buff), fp);
> +    sscanf(buff, "%*s %lu", &free); 
> +    fgets(buff, sizeof(buff), fp);
> +    sscanf(buff, "%*s %lu", &buffers); 
> +    fgets(buff, sizeof(buff), fp);
> +    sscanf(buff, "%*s %lu", &cached); 
> +    
> +    total *= 1024;
> +    free *= 1024;
> +    buffers *= 1024;
> +    cached *= 1024;
> +    used = total - free;
> +
> +  } else {
> +    
> +    fgets(buff, sizeof(buff), fp);  /* Ignore the first line */
> +    fgets(buff, sizeof(buff), fp);
> +    sscanf(buff, "%*s %lu %lu %*u %*u %lu %lu", 
> +        &total, &used, &buffers, &cached);
> +  }
> +
> +#endif /* HAVE_LIBGTOP */
> +
>    used -= (buffers + cached); 
>    mem_val = (int) ((((float) used) / total) * 100.0);
>    D(("%d = 100 * %lu / %lu\n", (100 * used) / total, used, total));
> @@ -107,11 +130,32 @@
>      used=(unsigned long)swap.used;
>   } while (swap.total==0 && swap.used==0 && check++<15);
>  #else
> -  fgets(buff, sizeof(buff), fp);
> -  sscanf(buff, "%*s %lu %lu", &total, &used);
> +
> + if( kernel_2_6 ) {
> +   fgets(buff, sizeof(buff), fp);
> +   fgets(buff, sizeof(buff), fp);
> +   fgets(buff, sizeof(buff), fp);
> +   fgets(buff, sizeof(buff), fp);
> +   fgets(buff, sizeof(buff), fp);
> +   fgets(buff, sizeof(buff), fp);
> +   fgets(buff, sizeof(buff), fp);
> +   fgets(buff, sizeof(buff), fp);
> +   sscanf(buff, "%*s %lu", &total); 
> +   fgets(buff, sizeof(buff), fp);
> +   sscanf(buff, "%*s %lu", &free);; 
> +   
> +   total *= 1024;
> +   free *= 1024;
> +   used = total - free;
> +
> + } else {
> +
> +   fgets(buff, sizeof(buff), fp);
> +   sscanf(buff, "%*s %lu %lu", &total, &used);
> + }
>  
>    fclose(fp);
> -#endif
> +#endif /* HAVE_LIBGTOP */
>    swap_val = (int) ((((float) used) / total) * 100.0);
>  
>    /*printf ("Swap: %lu %lu %d%%\n", total, used, swap_val); */
> @@ -194,6 +238,27 @@
>  
>    int prio;
>  
> +
> +  /* check for Kernel 2.6 */
> +  FILE *fp;
> +  char version[8], buff[1024];
> +
> +  if ((fp = fopen("/proc/version", "r")) == NULL) {
> +    D(("Failed to open /proc/version -- %s\nWill assume not 2.6 kernel"
> +       , strerror(errno)));
> +    return;
> +  }
> +
> +  fgets(buff, sizeof(buff), fp);
> +  sscanf(buff, "%*s %*s %s", version);
> +  
> +  if(version[2] == '6') { 
> +    kernel_2_6 = 1; 
> +  }
> +
> +  close(fp);
> +  /* end check for Kernel 2.6 */
> +
>    atexit(Epplet_cleanup);
>    prio = getpriority(PRIO_PROCESS, getpid());
>    setpriority(PRIO_PROCESS, getpid(), prio + 10);
> 
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    [EMAIL PROTECTED]
熊耳 - 車君 (数田)                  [EMAIL PROTECTED]
Tokyo, Japan (東京 日本)


-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
enlightenment-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to