Index: wmcube/wmcube.c --- wmcube/wmcube.c.orig +++ wmcube/wmcube.c @@ -407,7 +407,7 @@ void set_plugin() { strcpy(obj_filename,plugin); if (access (obj_filename, R_OK) == -1) { - strcpy(obj_filename,"/usr/share/wmcube/"); + strcpy(obj_filename,"${LOCALBASE}/share/wmcube/"); strcat(obj_filename,plugin); } } @@ -939,6 +939,10 @@ void print_help() { printf(" -n : exclude \"nice\" processes (default OFF).\n"); #endif +#ifdef OPENBSD + printf(" -n : exclude \"nice\" processes. (default OFF)\n"); +#endif + printf(" -b : draw the cube in a brighter color (default OFF).\n"); printf(" -i : invert cube speed (default OFF).\n"); printf(" -p : do not display the CPU load (default OFF).\n"); @@ -997,7 +1001,7 @@ int loadobj(char *filename) { exit(0); } - if (fscanf(fp,"%s",tmp) < 1) + if (fscanf(fp,"%63s",tmp) < 1) printf("WARNING: Could not read first line of object-file (%s).\n",filename); if (strcmp(tmp,"WMCUBE_COORDINATES") != 0) { @@ -1006,7 +1010,7 @@ int loadobj(char *filename) { exit(0); } - if (fscanf(fp,"%s",tmp) < 1) + if (fscanf(fp,"%63s",tmp) < 1) printf("WARNING: Could not read second line of object-file (%s).\n",filename); while ((strcmp(tmp,"WMCUBE_LINES") != 0) && (strcmp(tmp,"WMCUBE_PLANES") != 0)) { @@ -1024,7 +1028,7 @@ int loadobj(char *filename) { fclose(fp); exit(0); } - if (fscanf(fp,"%s",tmp) < 1) + if (fscanf(fp,"%63s",tmp) < 1) printf("WARNING: Could not read next line of object-file (%s).\n",filename); if (feof(fp)) { @@ -1371,18 +1375,46 @@ int calc_cpu_total() { #elif defined OPENBSD +#include +#include +#include + int init_calc_cpu() { return 0; } -int calc_cpu_total() { - double avenrun[3]; +int calc_cpu_total() +{ + int total, used, t=0; + static int previous_total = 0, previous_used = 0; + int cpu,nice,system,idle; + unsigned long int cpu_time[CPUSTATES]; - (void) getloadavg(avenrun, sizeof(avenrun) / sizeof(avenrun[0])); - return(((5.0*avenrun[0] + 0.5) > 50) ? 50 : (5.0*avenrun[0] + 0.5))*2; -} + int mib[2]; + size_t size; + mib[0] = CTL_KERN; + mib[1] = KERN_CPTIME; + size = sizeof (cpu_time); + + if (sysctl(mib, 2, &cpu_time, &size, NULL, 0) < 0) + return 0; + + cpu = cpu_time[CP_USER]; + nice = cpu_time[CP_NICE]; + system = cpu_time[CP_SYS]; + idle = cpu_time[CP_IDLE]; + + used = cpu + system + use_nice*nice; + total = used + idle + (1-use_nice)*nice; + + t = 100 * (double)(used - previous_used) / (double)(total - previous_total); + previous_total = total; + previous_used = used; + + return t; +} #elif defined NETBSD /* END OPENBSD */ #include