int findspans ( int start, int end, char *seq, char *seqname ) { int i ; int sc = 0 ; int lsc = 0 ; int imn = -1 ; /* else sequences which start with pattern reported badly */ int imx = 0 ; int mx = 0 ; int ncpg, ngpc, ngc ; i = start ; while ( i < end ) { lsc = sc ; sc = ( end-1-i && seq[i]=='C' && seq[i+1]=='G' ) ? sc += CPGSCORE : --sc ; sc = sc < 0 ? 0 : sc ; /* printf("%d \t %d \t%d \t %d \t%d \t%d\n", i, sc, lsc, imn, imx, mx) ; */ if ( sc == 0 && lsc ) /* should threshold here */ { /* imn+1 is the start of the match. imx+1 is the end of the match, given pattern-length=2. fetchdb using reported co-ordinates will return a sequence which both starts and ends with a complete pattern. Further +1 adjusts so that start of sequence = 1 */ getstats ( imn+1, imx+2, seq, seqname, &ncpg, &ngpc, &ngc ) ; printf("%s\t %d\t %d\t %d\t CpG: %d\t %.1f\t %.1f\n", seqname, imn+2, imx+2, mx, ncpg, ngc*100.0/(imx+1-imn), 1.0*ncpg/ngpc) ; /* printf("%s \t %d\t %d\t %d \n", seqname, imn+2, imx+2, mx ) ; */ /* Recursive call searches from one position after the end of the last match to the current position */ findspans( imx+2, i, seq, seqname ) ; sc = lsc = imn = imx = mx = 0 ; } imx = sc > mx ? i : imx ; mx = sc > mx ? sc : mx ; imn = sc == 0 ? i : imn ; ++i ; } if ( sc != 0 ) /* should threshold here */ { /* printf("%d \t %d \t%d \t %d \t%d \t%d\n", i, sc, lsc, imn, imx, mx) ; */ getstats ( imn+1, imx+2, seq, seqname, &ncpg, &ngpc, &ngc ) ; printf("%s\t %d\t %d\t %d\t CpG: %d\t %.1f\t %.2f\n", seqname, imn+2, imx+2, mx, ncpg, ngc*100.0/(imx+1-imn), 1.0*ncpg/ngpc) ; /* printf("%s \t %d\t %d\t %d \n", seqname, imn+2, imx+2, mx ) ; */ findspans( imx+2, end, seq, seqname ) ; } }
void sbbs_t::sys_info() { char tmp[128]; uint i; stats_t stats; bputs(text[SiHdr]); getstats(&cfg,0,&stats); bprintf(text[SiSysName],cfg.sys_name); bprintf(text[SiSysID],cfg.sys_id); /* QWK ID */ for(i=0;i<cfg.total_faddrs;i++) bprintf(text[SiSysFaddr],smb_faddrtoa(&cfg.faddr[i],tmp)); if(cfg.sys_psname[0]) /* PostLink/PCRelay */ bprintf(text[SiSysPsite],cfg.sys_psname,cfg.sys_psnum); bprintf(text[SiSysLocation],cfg.sys_location); bprintf(text[SiSysop],cfg.sys_op); bprintf(text[SiSysNodes],cfg.sys_nodes); // bprintf(text[SiNodeNumberName],cfg.node_num,cfg.node_name); bprintf(text[SiNodePhone],cfg.node_phone); bprintf(text[SiTotalLogons],ultoac(stats.logons,tmp)); bprintf(text[SiLogonsToday],ultoac(stats.ltoday,tmp)); bprintf(text[SiTotalTime],ultoac(stats.timeon,tmp)); bprintf(text[SiTimeToday],ultoac(stats.ttoday,tmp)); ver(); if(yesno(text[ViewSysInfoFileQ])) { CLS; sprintf(tmp,"%ssystem.msg", cfg.text_dir); printfile(tmp,0); } if(yesno(text[ViewLogonMsgQ])) { CLS; menu("logon"); } }
u_char * var_diskio(struct variable * vp, oid * name, size_t * length, int exact, size_t * var_len, WriteMethod ** write_method) { unsigned int indx; static unsigned long long_ret; static struct counter64 c64_ret; if (getstats() == 1) { return NULL; } if (header_simple_table(vp, name, length, exact, var_len, write_method, head.length)) { return NULL; } indx = (unsigned int) (name[*length - 1] - 1); if (indx >= head.length) return NULL; switch (vp->magic) { case DISKIO_INDEX: long_ret = indx+1; return (u_char *) &long_ret; case DISKIO_DEVICE: *var_len = strlen(head.indices[indx].name); return (u_char *) head.indices[indx].name; case DISKIO_NREAD: long_ret = (head.indices[indx].rsect*512) & 0xffffffff; return (u_char *) & long_ret; case DISKIO_NWRITTEN: long_ret = (head.indices[indx].wsect*512) & 0xffffffff; return (u_char *) & long_ret; case DISKIO_READS: long_ret = head.indices[indx].rio & 0xffffffff; return (u_char *) & long_ret; case DISKIO_WRITES: long_ret = head.indices[indx].wio & 0xffffffff; return (u_char *) & long_ret; case DISKIO_NREADX: *var_len = sizeof(struct counter64); c64_ret.low = head.indices[indx].rsect * 512 & 0xffffffff; c64_ret.high = head.indices[indx].rsect >> (32 - 9); return (u_char *) & c64_ret; case DISKIO_NWRITTENX: *var_len = sizeof(struct counter64); c64_ret.low = head.indices[indx].wsect * 512 & 0xffffffff; c64_ret.high = head.indices[indx].wsect >> (32 - 9); return (u_char *) & c64_ret; default: snmp_log(LOG_ERR, "don't know how to handle %d request\n", vp->magic); } return NULL; }
void track_call (const rpc_program &prog, int procno, size_t b) { rpcstats *stats = getstats (prog.progno, procno); stats->ncall++; stats->call_bytes += b; }
void track_reply (const rpc_program &prog, int procno, size_t b) { rpcstats *stats = getstats (prog.progno, procno); stats->nreply++; stats->reply_bytes += b; }
void track_rexmit (int progno, int procno, size_t b) { rpcstats *stats = getstats (progno, procno); stats->nrexmit++; stats->rexmit_bytes += b; }
u_char * var_diskio(struct variable * vp, oid * name, size_t * length, int exact, size_t * var_len, WriteMethod ** write_method) { static long long_ret; static struct counter64 c64_ret; unsigned int indx; if (getstats() == 0) return 0; if (header_simple_table (vp, name, length, exact, var_len, write_method, ndisk)) return NULL; indx = (unsigned int) (name[*length - 1] - 1); if (indx >= ndisk) return NULL; switch (vp->magic) { case DISKIO_INDEX: long_ret = (long) indx + 1; return (u_char *) & long_ret; case DISKIO_DEVICE: *var_len = strlen(dkname[indx]); return (u_char *) dkname[indx]; case DISKIO_NREAD: long_ret = (unsigned long) (dk[indx].ds_rbytes) & 0xffffffff; return (u_char *) & long_ret; case DISKIO_NWRITTEN: long_ret = (unsigned long) (dk[indx].ds_wbytes) & 0xffffffff; return (u_char *) & long_ret; case DISKIO_READS: long_ret = (unsigned long) dk[indx].ds_rxfer & 0xffffffff; return (u_char *) & long_ret; case DISKIO_WRITES: long_ret = (unsigned long) dk[indx].ds_wxfer & 0xffffffff; return (u_char *) & long_ret; case DISKIO_NREADX: *var_len = sizeof(struct counter64); c64_ret.low = dk[indx].ds_rbytes & 0xffffffff; c64_ret.high = dk[indx].ds_rbytes >> 32; return (u_char *) & c64_ret; case DISKIO_NWRITTENX: *var_len = sizeof(struct counter64); c64_ret.low = dk[indx].ds_rbytes & 0xffffffff; c64_ret.high = dk[indx].ds_rbytes >> 32; return (u_char *) & c64_ret; default: ERROR_MSG("diskio.c: don't know how to handle this request."); } return NULL; }
int main(void) { uint64_t count[MWAIT_CX_MAX], prev_count[MWAIT_CX_MAX]; int i; for (i = 0; i < MWAIT_CX_MAX; ++i) { char name[64]; size_t len; int subcnt; snprintf(name, sizeof(name), "machdep.mwait.C%d.subcnt", i); len = sizeof(subcnt); sysctlbyname(name, &subcnt, &len, NULL, 0); if (subcnt == 0) continue; snprintf(cx_stats[cx_stats_cnt].state_name, sizeof(cx_stats[cx_stats_cnt].state_name), "C%d", i); snprintf(cx_stats[cx_stats_cnt].sysctl_name, sizeof(cx_stats[cx_stats_cnt].sysctl_name), "machdep.mwait.C%d.entered", i); ++cx_stats_cnt; } getstats(prev_count); for (;;) { getstats(count); for (i = 0; i < cx_stats_cnt; ++i) { printf("%s %-5ju ", cx_stats[i].state_name, (uintmax_t)(count[i] - prev_count[i])); prev_count[i] = count[i]; } printf("\n"); fflush(stdout); sleep(1); } }
const char * swap_used(void) { int total, used; if (getstats(&total, &used)) { return NULL; } return fmt_human(used * 1024, 1024); }
const char * swap_free(void) { int total, used; if (getstats(&total, &used)) { return NULL; } return fmt_human((total - used) * 1024, 1024); }
void track_proctime (const rpc_program &prog, int procno, u_int64_t l) { rpcstats *stats = getstats (prog.progno, procno); // Don't bother with floats; this comes from getusec which is // probably more resolution that actually makes much sense anyway. if (stats->latency_ewma == 0) stats->latency_ewma = l; else stats->latency_ewma = (9 * stats->latency_ewma + l) / 10; }
int main(int argc, char **argv) { int c; int mask = 0; int minor = 0; int interval = 0; int fd; char buf[64]; int i; while ((c = getopt(argc, argv, "avmcsbM:i:")) != EOF) switch (c) { case 'a': mask = ~0; break; case 'v': mask |= DRM_VERSION; break; case 'm': mask |= DRM_MEMORY; break; case 'c': mask |= DRM_CLIENTS; break; case 's': mask |= DRM_STATS; break; case 'b': mask |= DRM_BUSID; break; case 'i': interval = strtol(optarg, NULL, 0); break; case 'M': minor = strtol(optarg, NULL, 0); break; default: fprintf( stderr, "Usage: dristat [options]\n\n" ); fprintf( stderr, "Displays DRM information. Use with no arguments to display available cards.\n\n" ); fprintf( stderr, " -a Show all available information\n" ); fprintf( stderr, " -b Show DRM bus ID's\n" ); fprintf( stderr, " -c Display information about DRM clients\n" ); fprintf( stderr, " -i [interval] Continuously display statistics every [interval] seconds\n" ); fprintf( stderr, " -v Display DRM module and card version information\n" ); fprintf( stderr, " -m Display memory use information\n" ); fprintf( stderr, " -s Display DRM statistics\n" ); fprintf( stderr, " -M [minor] Select card by minor number\n" ); return 1; } for (i = 0; i < 16; i++) if (!minor || i == minor) { sprintf(buf, DRM_DEV_NAME, DRM_DIR_NAME, i); fd = drmOpenMinor(i, 1, DRM_NODE_PRIMARY); if (fd >= 0) { printf("%s\n", buf); if (mask & DRM_BUSID) getbusid(fd); if (mask & DRM_VERSION) getversion(fd); if (mask & DRM_MEMORY) getvm(fd); if (mask & DRM_CLIENTS) getclients(fd); if (mask & DRM_STATS) getstats(fd, interval); close(fd); } } return 0; }
u_char * var_diskio(struct variable * vp, oid * name, size_t * length, int exact, size_t * var_len, WriteMethod ** write_method) { static long long_ret; unsigned int indx; if (getstats() == 1) { return NULL; } if (header_simple_table (vp, name, length, exact, var_len, write_method, num_drives)) { return NULL; } indx = (unsigned int) (name[*length - 1] - 1); if (indx >= num_drives) return NULL; switch (vp->magic) { case DISKIO_INDEX: long_ret = (long) drivestat[indx].bsd_unit_number; return (u_char *) & long_ret; case DISKIO_DEVICE: *var_len = strlen(drivestat[indx].name); return (u_char *) drivestat[indx].name; case DISKIO_NREAD: long_ret = (signed long) drivestat[indx].stats[kIDXBytesRead]; return (u_char *) & long_ret; case DISKIO_NWRITTEN: long_ret = (signed long) drivestat[indx].stats[kIDXBytesWritten]; return (u_char *) & long_ret; case DISKIO_READS: long_ret = (signed long) drivestat[indx].stats[kIDXNumReads]; return (u_char *) & long_ret; case DISKIO_WRITES: long_ret = (signed long) drivestat[indx].stats[kIDXNumWrites]; return (u_char *) & long_ret; default: ERROR_MSG("diskio.c: don't know how to handle this request."); } return NULL; }
const char * swap_perc(void) { int total, used; if (getstats(&total, &used)) { return NULL; } if (total == 0) { return NULL; } return bprintf("%d", 100 * used / total); }
u_char * var_diskio(struct variable * vp, oid * name, size_t * length, int exact, size_t * var_len, WriteMethod ** write_method) { static long long_ret; unsigned int indx; if (getstats() == 0) return 0; if (header_simple_table (vp, name, length, exact, var_len, write_method, ndisk)) return NULL; indx = (unsigned int) (name[*length - 1] - 1); if (indx >= ndisk) return NULL; switch (vp->magic) { case DISKIO_INDEX: long_ret = (long) indx + 1; return (u_char *) & long_ret; case DISKIO_DEVICE: *var_len = strlen(dkname[indx]); return (u_char *) dkname[indx]; case DISKIO_NREAD: long_ret = (signed long) (dk[indx].dk_sectors * dk[indx].dk_secsize); return (u_char *) & long_ret; case DISKIO_NWRITTEN: return NULL; /* Sigh... BSD doesn't keep seperate track */ case DISKIO_READS: long_ret = (signed long) dk[indx].dk_xfers; return (u_char *) & long_ret; case DISKIO_WRITES: return NULL; /* Sigh... BSD doesn't keep seperate track */ default: ERROR_MSG("diskio.c: don't know how to handle this request."); } return NULL; }
void devla_getstats(unsigned int regno, void * dummy) { static double expon1, expon5, expon15; double busy_time, busy_percent; int idx; if (getstats() == 1) { ERROR_MSG("can't do diskio getstats()\n"); return; } if (!la_head.length) { la_head.indices = (linux_diskio_la *) malloc(head.length * sizeof(linux_diskio_la)); for (idx=0; idx<head.length; idx++) { la_head.indices[idx].la1 = la_head.indices[idx].la5 = la_head.indices[idx].la15 = 0.; la_head.indices[idx].use_prev = head.indices[idx].use; } la_head.length = head.length; expon1 = exp(-(((double)DISKIO_SAMPLE_INTERVAL) / ((double)60))); expon5 = exp(-(((double)DISKIO_SAMPLE_INTERVAL) / ((double)300))); expon15 = exp(-(((double)DISKIO_SAMPLE_INTERVAL) / ((double)900))); } else if (head.length - la_head.length) { la_head.indices = (linux_diskio_la *) realloc(la_head.indices, head.length * sizeof(linux_diskio_la)); for (idx=la_head.length; idx<head.length; idx++) { la_head.indices[idx].la1 = la_head.indices[idx].la5 = la_head.indices[idx].la15 = 0.; la_head.indices[idx].use_prev = head.indices[idx].use; } la_head.length = head.length; } for (idx=0; idx<head.length; idx++) { busy_time = head.indices[idx].use - la_head.indices[idx].use_prev; busy_percent = busy_time * 100. / ((double) DISKIO_SAMPLE_INTERVAL) / 1000.; la_head.indices[idx].la1 = la_head.indices[idx].la1 * expon1 + busy_percent * (1. - expon1); la_head.indices[idx].la5 = la_head.indices[idx].la5 * expon5 + busy_percent * (1. - expon5); la_head.indices[idx].la15 = la_head.indices[idx].la15 * expon15 + busy_percent * (1. - expon15); /* fprintf(stderr, "(%d) update la1=%f la5=%f la15=%f\n", idx, la_head.indices[idx].la1, la_head.indices[idx].la5, la_head.indices[idx].la15); */ la_head.indices[idx].use_prev = head.indices[idx].use; } }
void sbbs_t::sys_stats(void) { char tmp[128]; stats_t stats; bputs(text[SystemStatsHdr]); getstats(&cfg,0,&stats); bprintf(text[StatsTotalLogons],ultoac(stats.logons,tmp)); bprintf(text[StatsLogonsToday],ultoac(stats.ltoday,tmp)); bprintf(text[StatsTotalTime],ultoac(stats.timeon,tmp)); bprintf(text[StatsTimeToday],ultoac(stats.ttoday,tmp)); bprintf(text[StatsUploadsToday],ultoac(stats.ulb,tmp) ,stats.uls); bprintf(text[StatsDownloadsToday],ultoac(stats.dlb,tmp) ,stats.dls); bprintf(text[StatsPostsToday],ultoac(stats.ptoday,tmp)); bprintf(text[StatsEmailsToday],ultoac(stats.etoday,tmp)); bprintf(text[StatsFeedbacksToday],ultoac(stats.ftoday,tmp)); }
void sbbs_t::node_stats(uint node_num) { char tmp[128]; stats_t stats; if(node_num>cfg.sys_nodes) { bputs(text[InvalidNode]); return; } if(!node_num) node_num=cfg.node_num; bprintf(text[NodeStatsHdr],node_num); getstats(&cfg,node_num,&stats); bprintf(text[StatsTotalLogons],ultoac(stats.logons,tmp)); bprintf(text[StatsLogonsToday],ultoac(stats.ltoday,tmp)); bprintf(text[StatsTotalTime],ultoac(stats.timeon,tmp)); bprintf(text[StatsTimeToday],ultoac(stats.ttoday,tmp)); bprintf(text[StatsUploadsToday],ultoac(stats.ulb,tmp) ,stats.uls); bprintf(text[StatsDownloadsToday],ultoac(stats.dlb,tmp) ,stats.dls); bprintf(text[StatsPostsToday],ultoac(stats.ptoday,tmp)); bprintf(text[StatsEmailsToday],ultoac(stats.etoday,tmp)); bprintf(text[StatsFeedbacksToday],ultoac(stats.ftoday,tmp)); }
void findspans ( int start, int end, char *seq, char *seqname ) { int i ; int sc = 0 ; int lsc = 0 ; int imn = -1 ; /* else sequences which start with pattern reported badly */ int imx = 0 ; int mx = 0 ; int winlen = 0; float expect, obsToExp; int ncpg, ngpc, ngc, ng, nc; i = start ; while ( i < end ) { lsc = sc ; sc += ( end-1-i && seq[i]=='C' && seq[i+1]=='G' ) ? CPGSCORE : -1 ; sc = sc < 0 ? 0 : sc ; /* printf("%d \t %d \t%d \t %d \t%d \t%d\n", i, sc, lsc, imn, imx, mx) ; */ if ( sc == 0 && lsc ) /* should threshold here */ { /* imn+1 is the start of the match. imx+1 is the end of the match, given pattern-length=2. fetchdb using reported co-ordinates will return a sequence which both starts and ends with a complete pattern. Further +1 adjusts so that start of sequence = 1 */ getstats ( imn+1, imx+2, seq, seqname, &ncpg, &ngpc, &ng, &nc ) ; ngc = ng + nc; if (((imx+2)-(imn+2))>199 && (ngc*100.0/(imx+1-imn))>50.0 ) { /* old gos estimate printf("%s\t %d\t %d\t %d\t CpG: %d\t %.1f\t %.1f\n", seqname, imn+2, imx+2, mx, ncpg, ngc*100.0/(imx+1-imn), 1.0*ncpg/ngpc) ; */ winlen=imx+1-imn; /* ASH 3/23/04: expected val from Gardiner-Garden & Frommer '87: */ expect = (float)(nc * ng) / (float)winlen; obsToExp = (float)ncpg / expect; if ( obsToExp > 0.60 ) printf("%s\t %d\t %d\t %d\t CpG: %d\t %.1f\t %.2f\t %.2f\n", seqname, imn+2, imx+2, mx, ncpg, ngc*100.0/(imx+1-imn), 1.0*ncpg/ngpc, obsToExp) ; } /* printf("%s \t %d\t %d\t %d \n", seqname, imn+2, imx+2, mx ) ; */ /* Recursive call searches from one position after the end of the last match to the current position */ findspans( imx+2, i, seq, seqname ) ; sc = lsc = imn = imx = mx = 0 ; } imx = sc > mx ? i : imx ; mx = sc > mx ? sc : mx ; imn = sc == 0 ? i : imn ; ++i ; } if ( sc != 0 ) /* should threshold here */ { /* printf("%d \t %d \t%d \t %d \t%d \t%d\n", i, sc, lsc, imn, imx, mx) ; */ /* ASH 3/23/04: Make this test & output consistent w/above. */ getstats ( imn+1, imx+2, seq, seqname, &ncpg, &ngpc, &ng, &nc ) ; ngc = nc + ng; if (((imx+2)-(imn+2))>199 && (ngc*100.0/(imx+1-imn))>50.0 ) { winlen=imx+1-imn; expect = (float)(nc * ng) / (float)winlen; obsToExp = (float)ncpg / expect; if ( obsToExp > 0.60 ) printf("%s\t %d\t %d\t %d\t CpG: %d\t %.1f\t %.2f\t %.2f\n", seqname, imn+2, imx+2, mx, ncpg, ngc*100.0/(imx+1-imn), 1.0*ncpg/ngpc, obsToExp) ; } /* printf("%s \t %d\t %d\t %d \n", seqname, imn+2, imx+2, mx ) ; */ findspans( imx+2, end, seq, seqname ) ; } }
u_char * var_diskio(struct variable * vp, oid * name, size_t * length, int exact, size_t * var_len, WriteMethod ** write_method) { static long long_ret; static struct counter64 c64_ret; long long longlong_ret; unsigned int indx; if (getstats() == 1) { return NULL; } if (header_simple_table (vp, name, length, exact, var_len, write_method, ndisk)) { return NULL; } indx = (unsigned int) (name[*length - 1] - 1); if (indx >= ndisk) return NULL; switch (vp->magic) { case DISKIO_INDEX: long_ret = (long) indx + 1;; return (u_char *) & long_ret; case DISKIO_DEVICE: *var_len = strlen(stat->dinfo->devices[indx].device_name); return (u_char *) stat->dinfo->devices[indx].device_name; case DISKIO_NREAD: #if defined(freebsd5) && __FreeBSD_version >= 500107 long_ret = (signed long) stat->dinfo->devices[indx].bytes[DEVSTAT_READ]; #else long_ret = (signed long) stat->dinfo->devices[indx].bytes_read; #endif return (u_char *) & long_ret; case DISKIO_NWRITTEN: #if defined(freebsd5) && __FreeBSD_version >= 500107 long_ret = (signed long) stat->dinfo->devices[indx].bytes[DEVSTAT_WRITE]; #else long_ret = (signed long) stat->dinfo->devices[indx].bytes_written; #endif return (u_char *) & long_ret; case DISKIO_NREADX: *var_len = sizeof(struct counter64); #if defined(freebsd5) && __FreeBSD_version >= 500107 longlong_ret = stat->dinfo->devices[indx].bytes[DEVSTAT_READ]; #else longlong_ret = stat->dinfo->devices[indx].bytes_read; #endif c64_ret.low = longlong_ret & 0xffffffff; c64_ret.high = longlong_ret >> 32; return (u_char *) & c64_ret; case DISKIO_NWRITTENX: *var_len = sizeof(struct counter64); #if defined(freebsd5) && __FreeBSD_version >= 500107 longlong_ret = stat->dinfo->devices[indx].bytes[DEVSTAT_WRITE]; #else longlong_ret = stat->dinfo->devices[indx].bytes_written; #endif c64_ret.low = longlong_ret & 0xffffffff; c64_ret.high = longlong_ret >> 32; return (u_char *) & c64_ret; case DISKIO_READS: #if defined(freebsd5) && __FreeBSD_version >= 500107 long_ret = (signed long) stat->dinfo->devices[indx].operations[DEVSTAT_READ]; #else long_ret = (signed long) stat->dinfo->devices[indx].num_reads; #endif return (u_char *) & long_ret; case DISKIO_WRITES: #if defined(freebsd5) && __FreeBSD_version >= 500107 long_ret = (signed long) stat->dinfo->devices[indx].operations[DEVSTAT_WRITE]; #else long_ret = (signed long) stat->dinfo->devices[indx].num_writes; #endif return (u_char *) & long_ret; case DISKIO_LA1: long_ret = devloads[indx].la1; return (u_char *) & long_ret; case DISKIO_LA5: long_ret = devloads[indx].la5; return (u_char *) & long_ret; case DISKIO_LA15: long_ret = devloads[indx].la15; return (u_char *) & long_ret; default: ERROR_MSG("diskio.c: don't know how to handle this request."); } return NULL; }
int main (char initialcommand[MAX_LINE]) { extern int errno; int c; int length; char inputbuffer[MAX_LINE];// the string the user inputs char * cmd = (char *) malloc(MAX_LINE); char * strings[MAX_ARGS]; //memcpy (inputbuffer, args, strlen(args)+1); read (initialcommand, inputbuffer,MAX_LINE); cmd = inputbuffer; int j; for (j = 0; j < MAX_ARGS; j++) { strings[j] = (char *) malloc (80); } int i = 0; strings[i] = (strtok (cmd," \t\n")); while (strings[i] != NULL) { i++; strings[i] = strtok (NULL," \t\n"); } execute(strings); getstats(); while (1){ printf("Enter a command:\n"); length = read (STDIN_FILENO, inputbuffer,MAX_LINE); if (length == 1) {// no text was entered //exit(0); } /*if (length<0) { exit(-1); // somthing went wrong }*/ else { cmd = inputbuffer; // srting after divding each word ot token int j; for (j = 0; j < MAX_ARGS; j++) { strings[j] = (char *) malloc (80); } int i = 0; strings[i] = (strtok (cmd," \t\n")); while (strings[i] != NULL) { i++; strings[i] = strtok (NULL," \t\n"); } if (strcmp(strings[0],"cd") == 0) { //If the command is cd, call chdir(): see man page for calling parameters //http://linux.die.net/man/3/chdir /*char * workdirectory[50]; getwd(workdirectory); strcat(workdirectory,strings[1]);*/ if (strcmp(strings[1],"..") == 0) { chdir(strings[1]); } else { char buff[MAX_LINE]; getwd(buff); strcat(buff,"/"); strcat(buff,strings[1]); chdir(buff); } //if (errno != 0) { //fprintf(stderr, "Change directory failed.\n"); //} } else if (strcmp(strings[0],"exit") == 0) { printf("Exiting tsh\n"); exit(-1); } else { execute(strings); getstats(); } /*int k; for (k = 0; k < MAX_ARGS; k++) { free(strings[k]); }*/ //free(cmd); } } exit(-1); }
void filemenu(int mode) { getstats(mode); if (button(100,100,170,120,"OPTIMIZE",9,13,base2,false,mode)==DDgui_LeftClick && mode!=DD_AfterCheck) { optimizeproject(); waitleftbutton=true; } if (button(100,121,170,141,"TextureO",9,13,base2,false,mode)==DDgui_LeftClick && mode!=DD_AfterCheck) { savetextureusefile(); waitleftbutton=true; } if (mode==DD_Draw) { glColor4f(buttontextlit); rectangle(661,120,775,264); } if (mode==DD_Check) if (leftclickinwindow(661,121,774,263) && mouseinwindow(661,121,774,260)) fscnselected=min(fscnbarpos+(my-121) / 10,filenum(prjlist)-1); if ((mode ==DD_Check) && mouseinwindow(661,121,774,263)) fscnbarpos-=wheel*4; scroller(775,120,790,264,15,15,filenum(prjlist),14,fscnbarpos,mode); if (mode==DD_Draw) { pf = prjlist; for (x=1;x<=fscnbarpos;x++) pf=pf->next; for (x=0;x<=13;x++) { if (pf!=NULL) { if (fscnbarpos+x==fscnselected) glColor4f(col4); else glColor4f(buttontextlit); glRasterPos2i(665,130+x*10); strcpy(st,pf->filedata.cFileName); glPrint(st,base2,18); pf=pf->next; } } glColor4f(buttontextlit); sprintf(s,"%d PROJECTS.",filenum(prjlist)); glRasterPos2i(683,277); glPrint(s,base2); } glColor4f(1,1,1,1); if ((button(686,283,771,299,texbutton1,0,96.0/256.0,85.0/256.0,112.0/256.0,false,mode) == DDgui_LeftClick) && (mode!=DD_AfterCheck)) { pf = prjlist; for (x=1;x<=fscnselected;x++) pf=pf->next; //sprintf(s,"%s%s",scenedir,pf->filedata.cFileName); memset(lastfilename,0,256); memcpy(lastfilename,pf->filedata.cFileName,strlen(pf->filedata.cFileName)-4); sprintf(s,"%s%s",projectdir,pf->filedata.cFileName); //loadaDDictscene(*actualscene,NULL,s,true,true,true,true,true); LoadProject(s); modellviews[3].cam=actualscene->editview; modellviews[3].cam2=actualscene->editview; tTexture *tex=texturelist; while ((tex!=NULL) && (tex->number!=selectedtexture)) tex=tex->next; memcpy(generatedtexture.commands,tex->commands,sizeof(generatedtexture.commands)); memcpy(generatedtexture.texts,tex->texts,sizeof(generatedtexture.texts)); generatedtexture.commandnum=tex->commandnum; //memcpy(generatedtexture.layers,tex->layers,sizeof(generatedtexture.layers)); for (y=0;y<=3;y++) { glBindTexture(GL_TEXTURE_2D, texlayers[y]); glTexImage2D(GL_TEXTURE_2D,0,3,256,256,0,GL_RGBA,GL_UNSIGNED_BYTE,generatedtexture.layers[y]); } if (materiallist!=NULL) { matselected=0; material *mat=materiallist; for (x=1;x<=matselected;x++) mat=mat->next; mattexture=mat->handle; } waitleftbutton=true; } if (button(685,300,770,316,texbutton1,0,144.0/256.0,85.0/256.0,160.0/256.0,false,mode) == DDgui_LeftClick) { char *ss=readline("Enter Filename (.scn not needed)",210,0,base2,lastfilename); if (ss!="") { //sprintf(s,"%s%s.scn",scenedir,ss); //saveaDDictscene(*actualscene,NULL,s,scntexturesave, scncamerasave, scnselectionsave, scnlightsave, scnobjectsave); memset(lastfilename,0,256); memcpy(lastfilename,ss,strlen(ss)); sprintf(s,"%s%s.64k",projectdir,ss); SaveProject(s); } } if (button(685,317,770,333,texbutton1,0,160.0/256.0,85.0/256.0,176.0/256.0,false,mode) == DDgui_LeftClick) { char *ss=readline("Enter Filename (.scn not needed)",210,0,base2,""); if (ss!="") { sprintf(s,"%s%s.m64",minimaldir,ss); //SaveMinimalScene(*actualscene,NULL,s); saveminimalproject(s,2); } } /*RadioButton(681,341,scntexturesave,"TEXTURES",mode); RadioButton(681,355,scncamerasave,"CAMERAS",mode); RadioButton(681,369,scnselectionsave,"SELECTIONS",mode); RadioButton(681,383,scnlightsave,"LIGHTS",mode); RadioButton(681,397,scnobjectsave,"OBJECTS",mode);*/ }
int main(int argc, char **argv) { int c; int count, waittime; int set_lun; int fd, retval; struct ctlstat_context ctx; /* default values */ retval = 0; waittime = 1; count = -1; memset(&ctx, 0, sizeof(ctx)); ctx.numdevs = 3; ctx.mode = CTLSTAT_MODE_STANDARD; ctx.flags |= CTLSTAT_FLAG_CPU; ctx.flags |= CTLSTAT_FLAG_FIRST_RUN; ctx.flags |= CTLSTAT_FLAG_HEADER; while ((c = getopt(argc, argv, ctlstat_opts)) != -1) { switch (c) { case 'C': ctx.flags &= ~CTLSTAT_FLAG_CPU; break; case 'c': count = atoi(optarg); break; case 'd': ctx.flags |= CTLSTAT_FLAG_DMA_TIME; break; case 'D': ctx.mode = CTLSTAT_MODE_DUMP; waittime = 30; break; case 'h': ctx.flags &= ~CTLSTAT_FLAG_HEADER; break; case 'j': ctx.mode = CTLSTAT_MODE_JSON; waittime = 30; break; case 'l': { int cur_lun; cur_lun = atoi(optarg); if (cur_lun > CTL_STAT_LUN_BITS) errx(1, "Invalid LUN number %d", cur_lun); bit_ffs(ctx.lun_mask, CTL_STAT_LUN_BITS, &set_lun); if (set_lun == -1) ctx.numdevs = 1; else ctx.numdevs++; bit_set(ctx.lun_mask, cur_lun); break; } case 'n': ctx.numdevs = atoi(optarg); break; case 't': ctx.flags |= CTLSTAT_FLAG_TOTALS; ctx.numdevs = 3; break; case 'w': waittime = atoi(optarg); break; default: retval = 1; usage(retval); exit(retval); break; } } bit_ffs(ctx.lun_mask, CTL_STAT_LUN_BITS, &set_lun); if ((F_TOTALS(&ctx)) && (set_lun != -1)) { errx(1, "Total Mode (-t) is incompatible with individual " "LUN mode (-l)"); } else if (set_lun == -1) { /* * Note that this just selects the first N LUNs to display, * but at this point we have no knoweledge of which LUN * numbers actually exist. So we may select LUNs that * aren't there. */ bit_nset(ctx.lun_mask, 0, min(ctx.numdevs - 1, CTL_STAT_LUN_BITS - 1)); } if ((fd = open(CTL_DEFAULT_DEV, O_RDWR)) == -1) err(1, "cannot open %s", CTL_DEFAULT_DEV); for (;count != 0;) { ctx.tmp_lun_stats = ctx.prev_lun_stats; ctx.prev_lun_stats = ctx.cur_lun_stats; ctx.cur_lun_stats = ctx.tmp_lun_stats; ctx.prev_time = ctx.cur_time; ctx.prev_cpu = ctx.cur_cpu; if (getstats(fd, &ctx.num_luns, &ctx.cur_lun_stats, &ctx.cur_time, &ctx.flags) != 0) errx(1, "error returned from getstats()"); switch(ctx.mode) { case CTLSTAT_MODE_STANDARD: ctlstat_standard(&ctx); break; case CTLSTAT_MODE_DUMP: ctlstat_dump(&ctx); break; case CTLSTAT_MODE_JSON: ctlstat_json(&ctx); break; default: break; } fprintf(stdout, "\n"); ctx.flags &= ~CTLSTAT_FLAG_FIRST_RUN; if (count != 1) sleep(waittime); if (count > 0) count--; } exit (retval); }
const char* sbbs_t::atcode(char* sp, char* str, size_t maxlen) { char* tp; uint i; uint ugrp; uint usub; long l; stats_t stats; node_t node; struct tm tm; str[0]=0; if(!strcmp(sp,"VER")) return(VERSION); if(!strcmp(sp,"REV")) { safe_snprintf(str,maxlen,"%c",REVISION); return(str); } if(!strcmp(sp,"FULL_VER")) { safe_snprintf(str,maxlen,"%s%c%s",VERSION,REVISION,beta_version); truncsp(str); #if defined(_DEBUG) strcat(str," Debug"); #endif return(str); } if(!strcmp(sp,"VER_NOTICE")) return(VERSION_NOTICE); if(!strcmp(sp,"OS_VER")) return(os_version(str)); #ifdef JAVASCRIPT if(!strcmp(sp,"JS_VER")) return((char *)JS_GetImplementationVersion()); #endif if(!strcmp(sp,"PLATFORM")) return(PLATFORM_DESC); if(!strcmp(sp,"COPYRIGHT")) return(COPYRIGHT_NOTICE); if(!strcmp(sp,"COMPILER")) { DESCRIBE_COMPILER(str); return(str); } if(!strcmp(sp,"UPTIME")) { extern volatile time_t uptime; time_t up=time(NULL)-uptime; if(up<0) up=0; char days[64]=""; if((up/(24*60*60))>=2) { sprintf(days,"%lu days ",(ulong)(up/(24L*60L*60L))); up%=(24*60*60); } safe_snprintf(str,maxlen,"%s%lu:%02lu" ,days ,(ulong)(up/(60L*60L)) ,(ulong)((up/60L)%60L) ); return(str); } if(!strcmp(sp,"SERVED")) { extern volatile ulong served; safe_snprintf(str,maxlen,"%lu",served); return(str); } if(!strcmp(sp,"SOCKET_LIB")) return(socklib_version(str,SOCKLIB_DESC)); if(!strcmp(sp,"MSG_LIB")) { safe_snprintf(str,maxlen,"SMBLIB %s",smb_lib_ver()); return(str); } if(!strcmp(sp,"BBS") || !strcmp(sp,"BOARDNAME")) return(cfg.sys_name); if(!strcmp(sp,"BAUD") || !strcmp(sp,"BPS")) { safe_snprintf(str,maxlen,"%lu",cur_rate); return(str); } if(!strcmp(sp,"CONN")) return(connection); if(!strcmp(sp,"SYSOP")) return(cfg.sys_op); if(!strcmp(sp,"LOCATION")) return(cfg.sys_location); if(!strcmp(sp,"NODE")) { safe_snprintf(str,maxlen,"%u",cfg.node_num); return(str); } if(!strcmp(sp,"TNODE")) { safe_snprintf(str,maxlen,"%u",cfg.sys_nodes); return(str); } if(!strcmp(sp,"INETADDR")) return(cfg.sys_inetaddr); if(!strcmp(sp,"HOSTNAME")) return(startup->host_name); if(!strcmp(sp,"FIDOADDR")) { if(cfg.total_faddrs) return(smb_faddrtoa(&cfg.faddr[0],str)); return(nulstr); } if(!strcmp(sp,"EMAILADDR")) return(usermailaddr(&cfg, str ,cfg.inetmail_misc&NMAIL_ALIAS ? useron.alias : useron.name)); if(!strcmp(sp,"QWKID")) return(cfg.sys_id); if(!strcmp(sp,"TIME") || !strcmp(sp,"SYSTIME")) { now=time(NULL); memset(&tm,0,sizeof(tm)); localtime_r(&now,&tm); if(cfg.sys_misc&SM_MILITARY) safe_snprintf(str,maxlen,"%02d:%02d:%02d" ,tm.tm_hour,tm.tm_min,tm.tm_sec); else safe_snprintf(str,maxlen,"%02d:%02d %s" ,tm.tm_hour==0 ? 12 : tm.tm_hour>12 ? tm.tm_hour-12 : tm.tm_hour, tm.tm_min, tm.tm_hour>11 ? "pm":"am"); return(str); } if(!strcmp(sp,"TIMEZONE")) return(smb_zonestr(sys_timezone(&cfg),str)); if(!strcmp(sp,"DATE") || !strcmp(sp,"SYSDATE")) { return(unixtodstr(&cfg,time32(NULL),str)); } if(!strcmp(sp,"DATETIME")) return(timestr(time(NULL))); if(!strcmp(sp,"TMSG")) { l=0; for(i=0;i<cfg.total_subs;i++) l+=getposts(&cfg,i); /* l=total posts */ safe_snprintf(str,maxlen,"%lu",l); return(str); } if(!strcmp(sp,"TUSER")) { safe_snprintf(str,maxlen,"%u",total_users(&cfg)); return(str); } if(!strcmp(sp,"TFILE")) { l=0; for(i=0;i<cfg.total_dirs;i++) l+=getfiles(&cfg,i); safe_snprintf(str,maxlen,"%lu",l); return(str); } if(!strcmp(sp,"TCALLS") || !strcmp(sp,"NUMCALLS")) { getstats(&cfg,0,&stats); safe_snprintf(str,maxlen,"%lu",stats.logons); return(str); } if(!strcmp(sp,"PREVON") || !strcmp(sp,"LASTCALLERNODE") || !strcmp(sp,"LASTCALLERSYSTEM")) return(lastuseron); if(!strcmp(sp,"CLS")) { CLS; return(nulstr); } if(!strcmp(sp,"PAUSE") || !strcmp(sp,"MORE")) { pause(); return(nulstr); } if(!strcmp(sp,"RESETPAUSE")) { lncntr=0; return(nulstr); } if(!strcmp(sp,"NOPAUSE") || !strcmp(sp,"POFF")) { sys_status^=SS_PAUSEOFF; return(nulstr); } if(!strcmp(sp,"PON") || !strcmp(sp,"AUTOMORE")) { sys_status^=SS_PAUSEON; return(nulstr); } /* NOSTOP */ /* STOP */ if(!strcmp(sp,"BELL") || !strcmp(sp,"BEEP")) return("\a"); if(!strcmp(sp,"EVENT")) { if(event_time==0) return("<none>"); return(timestr(event_time)); } /* LASTCALL */ if(!strncmp(sp,"NODE",4)) { i=atoi(sp+4); if(i && i<=cfg.sys_nodes) { getnodedat(i,&node,0); printnodedat(i,&node); } return(nulstr); } if(!strcmp(sp,"WHO")) { whos_online(true); return(nulstr); } /* User Codes */ if(!strcmp(sp,"USER") || !strcmp(sp,"ALIAS") || !strcmp(sp,"NAME")) return(useron.alias); if(!strcmp(sp,"FIRST")) { safe_snprintf(str,maxlen,"%s",useron.alias); tp=strchr(str,' '); if(tp) *tp=0; return(str); } if(!strcmp(sp,"USERNUM")) { safe_snprintf(str,maxlen,"%u",useron.number); return(str); } if(!strcmp(sp,"PHONE") || !strcmp(sp,"HOMEPHONE") || !strcmp(sp,"DATAPHONE") || !strcmp(sp,"DATA")) return(useron.phone); if(!strcmp(sp,"ADDR1")) return(useron.address); if(!strcmp(sp,"FROM")) return(useron.location); if(!strcmp(sp,"CITY")) { safe_snprintf(str,maxlen,"%s",useron.location); char* p=strchr(str,','); if(p) { *p=0; return(str); } return(nulstr); } if(!strcmp(sp,"STATE")) { char* p=strchr(useron.location,','); if(p) { p++; if(*p==' ') p++; return(p); } return(nulstr); } if(!strcmp(sp,"CPU")) return(useron.comp); if(!strcmp(sp,"HOST")) return(client_name); if(!strcmp(sp,"BDATE")) return(useron.birth); if(!strcmp(sp,"AGE")) { safe_snprintf(str,maxlen,"%u",getage(&cfg,useron.birth)); return(str); } if(!strcmp(sp,"CALLS") || !strcmp(sp,"NUMTIMESON")) { safe_snprintf(str,maxlen,"%u",useron.logons); return(str); } if(!strcmp(sp,"MEMO")) return(unixtodstr(&cfg,useron.pwmod,str)); if(!strcmp(sp,"SEC") || !strcmp(sp,"SECURITY")) { safe_snprintf(str,maxlen,"%u",useron.level); return(str); } if(!strcmp(sp,"SINCE")) return(unixtodstr(&cfg,useron.firston,str)); if(!strcmp(sp,"TIMEON") || !strcmp(sp,"TIMEUSED")) { now=time(NULL); safe_snprintf(str,maxlen,"%lu",(ulong)(now-logontime)/60L); return(str); } if(!strcmp(sp,"TUSED")) { /* Synchronet only */ now=time(NULL); return(sectostr((uint)(now-logontime),str)+1); } if(!strcmp(sp,"TLEFT")) { /* Synchronet only */ gettimeleft(); return(sectostr(timeleft,str)+1); } if(!strcmp(sp,"TPERD")) /* Synchronet only */ return(sectostr(cfg.level_timeperday[useron.level],str)+1); if(!strcmp(sp,"TPERC")) /* Synchronet only */ return(sectostr(cfg.level_timepercall[useron.level],str)+1); if(!strcmp(sp,"TIMELIMIT")) { safe_snprintf(str,maxlen,"%u",cfg.level_timepercall[useron.level]); return(str); } if(!strcmp(sp,"MINLEFT") || !strcmp(sp,"LEFT") || !strcmp(sp,"TIMELEFT")) { gettimeleft(); safe_snprintf(str,maxlen,"%lu",timeleft/60); return(str); } if(!strcmp(sp,"LASTON")) return(timestr(useron.laston)); if(!strcmp(sp,"LASTDATEON")) return(unixtodstr(&cfg,useron.laston,str)); if(!strcmp(sp,"LASTTIMEON")) { memset(&tm,0,sizeof(tm)); localtime32(&useron.laston,&tm); if(cfg.sys_misc&SM_MILITARY) safe_snprintf(str,maxlen,"%02d:%02d:%02d" ,tm.tm_hour, tm.tm_min, tm.tm_sec); else safe_snprintf(str,maxlen,"%02d:%02d %s" ,tm.tm_hour==0 ? 12 : tm.tm_hour>12 ? tm.tm_hour-12 : tm.tm_hour, tm.tm_min, tm.tm_hour>11 ? "pm":"am"); return(str); } if(!strcmp(sp,"MSGLEFT") || !strcmp(sp,"MSGSLEFT")) { safe_snprintf(str,maxlen,"%u",useron.posts); return(str); } if(!strcmp(sp,"MSGREAD")) { safe_snprintf(str,maxlen,"%lu",posts_read); return(str); } if(!strcmp(sp,"FREESPACE")) { safe_snprintf(str,maxlen,"%lu",getfreediskspace(cfg.temp_dir,0)); return(str); } if(!strcmp(sp,"FREESPACEK")) { safe_snprintf(str,maxlen,"%lu",getfreediskspace(cfg.temp_dir,1024)); return(str); } if(!strcmp(sp,"UPBYTES")) { safe_snprintf(str,maxlen,"%lu",useron.ulb); return(str); } if(!strcmp(sp,"UPK")) { safe_snprintf(str,maxlen,"%lu",useron.ulb/1024L); return(str); } if(!strcmp(sp,"UPS") || !strcmp(sp,"UPFILES")) { safe_snprintf(str,maxlen,"%u",useron.uls); return(str); } if(!strcmp(sp,"DLBYTES")) { safe_snprintf(str,maxlen,"%lu",useron.dlb); return(str); } if(!strcmp(sp,"DOWNK")) { safe_snprintf(str,maxlen,"%lu",useron.dlb/1024L); return(str); } if(!strcmp(sp,"DOWNS") || !strcmp(sp,"DLFILES")) { safe_snprintf(str,maxlen,"%u",useron.dls); return(str); } if(!strcmp(sp,"LASTNEW")) return(unixtodstr(&cfg,(time32_t)ns_time,str)); if(!strcmp(sp,"NEWFILETIME")) return(timestr(ns_time)); /* MAXDL */ if(!strcmp(sp,"MAXDK") || !strcmp(sp,"DLKLIMIT") || !strcmp(sp,"KBLIMIT")) { safe_snprintf(str,maxlen,"%lu",cfg.level_freecdtperday[useron.level]/1024L); return(str); } if(!strcmp(sp,"DAYBYTES")) { /* amt of free cdts used today */ safe_snprintf(str,maxlen,"%lu",cfg.level_freecdtperday[useron.level]-useron.freecdt); return(str); } if(!strcmp(sp,"BYTELIMIT")) { safe_snprintf(str,maxlen,"%lu",cfg.level_freecdtperday[useron.level]); return(str); } if(!strcmp(sp,"KBLEFT")) { safe_snprintf(str,maxlen,"%lu",(useron.cdt+useron.freecdt)/1024L); return(str); } if(!strcmp(sp,"BYTESLEFT")) { safe_snprintf(str,maxlen,"%lu",useron.cdt+useron.freecdt); return(str); } if(!strcmp(sp,"CONF")) { safe_snprintf(str,maxlen,"%s %s" ,usrgrps ? cfg.grp[usrgrp[curgrp]]->sname :nulstr ,usrgrps ? cfg.sub[usrsub[curgrp][cursub[curgrp]]]->sname : nulstr); return(str); } if(!strcmp(sp,"CONFNUM")) { safe_snprintf(str,maxlen,"%u %u",curgrp+1,cursub[curgrp]+1); return(str); } if(!strcmp(sp,"NUMDIR")) { safe_snprintf(str,maxlen,"%u %u",usrlibs ? curlib+1 : 0,usrlibs ? curdir[curlib]+1 : 0); return(str); } if(!strcmp(sp,"EXDATE") || !strcmp(sp,"EXPDATE")) return(unixtodstr(&cfg,useron.expire,str)); if(!strcmp(sp,"EXPDAYS")) { now=time(NULL); l=(long)(useron.expire-now); if(l<0) l=0; safe_snprintf(str,maxlen,"%lu",l/(1440L*60L)); return(str); } if(!strcmp(sp,"MEMO1")) return(useron.note); if(!strcmp(sp,"MEMO2") || !strcmp(sp,"COMPANY")) return(useron.name); if(!strcmp(sp,"ZIP")) return(useron.zipcode); if(!strcmp(sp,"HANGUP")) { hangup(); return(nulstr); } /* Synchronet Specific */ if(!strncmp(sp,"SETSTR:",7)) { strcpy(main_csi.str,sp+7); return(nulstr); } if(!strncmp(sp,"EXEC:",5)) { exec_bin(sp+5,&main_csi); return(nulstr); } if(!strncmp(sp,"EXEC_XTRN:",10)) { for(i=0;i<cfg.total_xtrns;i++) if(!stricmp(cfg.xtrn[i]->code,sp+10)) break; if(i<cfg.total_xtrns) exec_xtrn(i); return(nulstr); } if(!strncmp(sp,"MENU:",5)) { menu(sp+5); return(nulstr); } if(!strncmp(sp,"TYPE:",5)) { printfile(cmdstr(sp+5,nulstr,nulstr,str),0); return(nulstr); } if(!strncmp(sp,"INCLUDE:",8)) { printfile(cmdstr(sp+8,nulstr,nulstr,str),P_NOCRLF|P_SAVEATR); return(nulstr); } if(!strcmp(sp,"QUESTION")) return(question); if(!strcmp(sp,"HANDLE")) return(useron.handle); if(!strcmp(sp,"CID") || !strcmp(sp,"IP")) return(cid); if(!strcmp(sp,"LOCAL-IP")) return(local_addr); if(!strcmp(sp,"CRLF")) return("\r\n"); if(!strcmp(sp,"PUSHXY")) { ansi_save(); return(nulstr); } if(!strcmp(sp,"POPXY")) { ansi_restore(); return(nulstr); } if(!strncmp(sp,"UP:",3)) { cursor_up(atoi(sp+3)); return(str); } if(!strncmp(sp,"DOWN:",5)) { cursor_down(atoi(sp+5)); return(str); } if(!strncmp(sp,"LEFT:",5)) { cursor_left(atoi(sp+5)); return(str); } if(!strncmp(sp,"RIGHT:",6)) { cursor_right(atoi(sp+6)); return(str); } if(!strncmp(sp,"GOTOXY:",7)) { tp=strchr(sp,','); if(tp!=NULL) { tp++; ansi_gotoxy(atoi(sp+7),atoi(tp)); } return(nulstr); } if(!strcmp(sp,"GRP")) { if(SMB_IS_OPEN(&smb)) { if(smb.subnum==INVALID_SUB) return("Local"); if(smb.subnum<cfg.total_subs) return(cfg.grp[cfg.sub[smb.subnum]->grp]->sname); } return(usrgrps ? cfg.grp[usrgrp[curgrp]]->sname : nulstr); } if(!strcmp(sp,"GRPL")) { if(SMB_IS_OPEN(&smb)) { if(smb.subnum==INVALID_SUB) return("Local"); if(smb.subnum<cfg.total_subs) return(cfg.grp[cfg.sub[smb.subnum]->grp]->lname); } return(usrgrps ? cfg.grp[usrgrp[curgrp]]->lname : nulstr); } if(!strcmp(sp,"GN")) { if(SMB_IS_OPEN(&smb)) ugrp=getusrgrp(smb.subnum); else ugrp=usrgrps ? curgrp+1 : 0; safe_snprintf(str,maxlen,"%u",ugrp); return(str); } if(!strcmp(sp,"GL")) { if(SMB_IS_OPEN(&smb)) ugrp=getusrgrp(smb.subnum); else ugrp=usrgrps ? curgrp+1 : 0; safe_snprintf(str,maxlen,"%-4u",ugrp); return(str); } if(!strcmp(sp,"GR")) { if(SMB_IS_OPEN(&smb)) ugrp=getusrgrp(smb.subnum); else ugrp=usrgrps ? curgrp+1 : 0; safe_snprintf(str,maxlen,"%4u",ugrp); return(str); } if(!strcmp(sp,"SUB")) { if(SMB_IS_OPEN(&smb)) { if(smb.subnum==INVALID_SUB) return("Mail"); else if(smb.subnum<cfg.total_subs) return(cfg.sub[smb.subnum]->sname); } return(usrgrps ? cfg.sub[usrsub[curgrp][cursub[curgrp]]]->sname : nulstr); } if(!strcmp(sp,"SUBL")) { if(SMB_IS_OPEN(&smb)) { if(smb.subnum==INVALID_SUB) return("Mail"); else if(smb.subnum<cfg.total_subs) return(cfg.sub[smb.subnum]->lname); } return(usrgrps ? cfg.sub[usrsub[curgrp][cursub[curgrp]]]->lname : nulstr); } if(!strcmp(sp,"SN")) { if(SMB_IS_OPEN(&smb)) usub=getusrsub(smb.subnum); else usub=usrgrps ? cursub[curgrp]+1 : 0; safe_snprintf(str,maxlen,"%u",usub); return(str); } if(!strcmp(sp,"SL")) { if(SMB_IS_OPEN(&smb)) usub=getusrsub(smb.subnum); else usub=usrgrps ? cursub[curgrp]+1 : 0; safe_snprintf(str,maxlen,"%-4u",usub); return(str); } if(!strcmp(sp,"SR")) { if(SMB_IS_OPEN(&smb)) usub=getusrsub(smb.subnum); else usub=usrgrps ? cursub[curgrp]+1 : 0; safe_snprintf(str,maxlen,"%4u",usub); return(str); } if(!strcmp(sp,"LIB")) return(usrlibs ? cfg.lib[usrlib[curlib]]->sname : nulstr); if(!strcmp(sp,"LIBL")) return(usrlibs ? cfg.lib[usrlib[curlib]]->lname : nulstr); if(!strcmp(sp,"LN")) { safe_snprintf(str,maxlen,"%u",usrlibs ? curlib+1 : 0); return(str); } if(!strcmp(sp,"LL")) { safe_snprintf(str,maxlen,"%-4u",usrlibs ? curlib+1 : 0); return(str); } if(!strcmp(sp,"LR")) { safe_snprintf(str,maxlen,"%4u",usrlibs ? curlib+1 : 0); return(str); } if(!strcmp(sp,"DIR")) return(usrlibs ? cfg.dir[usrdir[curlib][curdir[curlib]]]->sname :nulstr); if(!strcmp(sp,"DIRL")) return(usrlibs ? cfg.dir[usrdir[curlib][curdir[curlib]]]->lname : nulstr); if(!strcmp(sp,"DN")) { safe_snprintf(str,maxlen,"%u",usrlibs ? curdir[curlib]+1 : 0); return(str); } if(!strcmp(sp,"DL")) { safe_snprintf(str,maxlen,"%-4u",usrlibs ? curdir[curlib]+1 : 0); return(str); } if(!strcmp(sp,"DR")) { safe_snprintf(str,maxlen,"%4u",usrlibs ? curdir[curlib]+1 : 0); return(str); } if(!strcmp(sp,"NOACCESS")) { if(noaccess_str==text[NoAccessTime]) safe_snprintf(str,maxlen,noaccess_str,noaccess_val/60,noaccess_val%60); else if(noaccess_str==text[NoAccessDay]) safe_snprintf(str,maxlen,noaccess_str,wday[noaccess_val]); else safe_snprintf(str,maxlen,noaccess_str,noaccess_val); return(str); } if(!strcmp(sp,"LAST")) { tp=strrchr(useron.alias,' '); if(tp) tp++; else tp=useron.alias; return(tp); } if(!strcmp(sp,"REAL") || !strcmp(sp,"FIRSTREAL")) { safe_snprintf(str,maxlen,"%s",useron.name); tp=strchr(str,' '); if(tp) *tp=0; return(str); } if(!strcmp(sp,"LASTREAL")) { tp=strrchr(useron.name,' '); if(tp) tp++; else tp=useron.name; return(tp); } if(!strcmp(sp,"MAILW")) { safe_snprintf(str,maxlen,"%u",getmail(&cfg,useron.number,0)); return(str); } if(!strcmp(sp,"MAILP")) { safe_snprintf(str,maxlen,"%u",getmail(&cfg,useron.number,1)); return(str); } if(!strncmp(sp,"MAILW:",6)) { safe_snprintf(str,maxlen,"%u",getmail(&cfg,atoi(sp+6),0)); return(str); } if(!strncmp(sp,"MAILP:",6)) { safe_snprintf(str,maxlen,"%u",getmail(&cfg,atoi(sp+6),1)); return(str); } if(!strcmp(sp,"MSGREPLY")) { safe_snprintf(str,maxlen,"%c",cfg.sys_misc&SM_RA_EMU ? 'R' : 'A'); return(str); } if(!strcmp(sp,"MSGREREAD")) { safe_snprintf(str,maxlen,"%c",cfg.sys_misc&SM_RA_EMU ? 'A' : 'R'); return(str); } if(!strncmp(sp,"STATS.",6)) { getstats(&cfg,0,&stats); sp+=6; if(!strcmp(sp,"LOGONS")) safe_snprintf(str,maxlen,"%lu",stats.logons); else if(!strcmp(sp,"LTODAY")) safe_snprintf(str,maxlen,"%lu",stats.ltoday); else if(!strcmp(sp,"TIMEON")) safe_snprintf(str,maxlen,"%lu",stats.timeon); else if(!strcmp(sp,"TTODAY")) safe_snprintf(str,maxlen,"%lu",stats.ttoday); else if(!strcmp(sp,"ULS")) safe_snprintf(str,maxlen,"%lu",stats.uls); else if(!strcmp(sp,"ULB")) safe_snprintf(str,maxlen,"%lu",stats.ulb); else if(!strcmp(sp,"DLS")) safe_snprintf(str,maxlen,"%lu",stats.dls); else if(!strcmp(sp,"DLB")) safe_snprintf(str,maxlen,"%lu",stats.dlb); else if(!strcmp(sp,"PTODAY")) safe_snprintf(str,maxlen,"%lu",stats.ptoday); else if(!strcmp(sp,"ETODAY")) safe_snprintf(str,maxlen,"%lu",stats.etoday); else if(!strcmp(sp,"FTODAY")) safe_snprintf(str,maxlen,"%lu",stats.ftoday); else if(!strcmp(sp,"NUSERS")) safe_snprintf(str,maxlen,"%u",stats.nusers); return(str); } /* Message header codes */ if(!strcmp(sp,"MSG_TO") && current_msg!=NULL) { if(current_msg->to==NULL) return(nulstr); if(current_msg->to_ext!=NULL) safe_snprintf(str,maxlen,"%s #%s",current_msg->to,current_msg->to_ext); else if(current_msg->to_net.type!=NET_NONE) { char tmp[128]; safe_snprintf(str,maxlen,"%s (%s)",current_msg->to ,smb_netaddrstr(¤t_msg->to_net,tmp)); } else return(current_msg->to); return(str); } if(!strcmp(sp,"MSG_TO_NAME") && current_msg!=NULL) return(current_msg->to==NULL ? nulstr : current_msg->to); if(!strcmp(sp,"MSG_TO_EXT") && current_msg!=NULL) { if(current_msg->to_ext==NULL) return(nulstr); return(current_msg->to_ext); } if(!strcmp(sp,"MSG_TO_NET") && current_msg!=NULL) return(smb_netaddrstr(¤t_msg->to_net,str)); if(!strcmp(sp,"MSG_FROM") && current_msg!=NULL) { if(current_msg->from==NULL) return(nulstr); if(current_msg->hdr.attr&MSG_ANONYMOUS && !SYSOP) return(text[Anonymous]); if(current_msg->from_ext!=NULL) safe_snprintf(str,maxlen,"%s #%s",current_msg->from,current_msg->from_ext); else if(current_msg->from_net.type!=NET_NONE) { char tmp[128]; safe_snprintf(str,maxlen,"%s (%s)",current_msg->from ,smb_netaddrstr(¤t_msg->from_net,tmp)); } else return(current_msg->from); return(str); } if(!strcmp(sp,"MSG_FROM_NAME") && current_msg!=NULL) { if(current_msg->from==NULL) return(nulstr); if(current_msg->hdr.attr&MSG_ANONYMOUS && !SYSOP) return(text[Anonymous]); return(current_msg->from); } if(!strcmp(sp,"MSG_FROM_EXT") && current_msg!=NULL) { if(!(current_msg->hdr.attr&MSG_ANONYMOUS) || SYSOP) if(current_msg->from_ext!=NULL) return(current_msg->from_ext); return(nulstr); } if(!strcmp(sp,"MSG_FROM_NET") && current_msg!=NULL) { if(current_msg->from_net.type!=NET_NONE && (!(current_msg->hdr.attr&MSG_ANONYMOUS) || SYSOP)) return(smb_netaddrstr(¤t_msg->from_net,str)); return(nulstr); } if(!strcmp(sp,"MSG_SUBJECT") && current_msg!=NULL) return(current_msg->subj==NULL ? nulstr : current_msg->subj); if(!strcmp(sp,"MSG_DATE") && current_msg!=NULL) return(timestr(current_msg->hdr.when_written.time)); if(!strcmp(sp,"MSG_TIMEZONE") && current_msg!=NULL) return(smb_zonestr(current_msg->hdr.when_written.zone,NULL)); if(!strcmp(sp,"MSG_ATTR") && current_msg!=NULL) { safe_snprintf(str,maxlen,"%s%s%s%s%s%s%s%s%s%s%s" ,current_msg->hdr.attr&MSG_PRIVATE ? "Private " :nulstr ,current_msg->hdr.attr&MSG_READ ? "Read " :nulstr ,current_msg->hdr.attr&MSG_DELETE ? "Deleted " :nulstr ,current_msg->hdr.attr&MSG_KILLREAD ? "Kill " :nulstr ,current_msg->hdr.attr&MSG_ANONYMOUS ? "Anonymous " :nulstr ,current_msg->hdr.attr&MSG_LOCKED ? "Locked " :nulstr ,current_msg->hdr.attr&MSG_PERMANENT ? "Permanent " :nulstr ,current_msg->hdr.attr&MSG_MODERATED ? "Moderated " :nulstr ,current_msg->hdr.attr&MSG_VALIDATED ? "Validated " :nulstr ,current_msg->hdr.attr&MSG_REPLIED ? "Replied " :nulstr ,current_msg->hdr.attr&MSG_NOREPLY ? "NoReply " :nulstr ); return(str); } if(!strcmp(sp,"MSG_ID") && current_msg!=NULL) return(current_msg->id==NULL ? nulstr : current_msg->id); if(!strcmp(sp,"MSG_REPLY_ID") && current_msg!=NULL) return(current_msg->reply_id==NULL ? nulstr : current_msg->reply_id); if(!strcmp(sp,"MSG_NUM") && current_msg!=NULL) { safe_snprintf(str,maxlen,"%lu",current_msg->hdr.number); return(str); } if(!strcmp(sp,"SMB_AREA")) { if(smb.subnum!=INVALID_SUB && smb.subnum<cfg.total_subs) safe_snprintf(str,maxlen,"%s %s" ,cfg.grp[cfg.sub[smb.subnum]->grp]->sname ,cfg.sub[smb.subnum]->sname); return(str); } if(!strcmp(sp,"SMB_AREA_DESC")) { if(smb.subnum!=INVALID_SUB && smb.subnum<cfg.total_subs) safe_snprintf(str,maxlen,"%s %s" ,cfg.grp[cfg.sub[smb.subnum]->grp]->lname ,cfg.sub[smb.subnum]->lname); return(str); } if(!strcmp(sp,"SMB_GROUP")) { if(smb.subnum!=INVALID_SUB && smb.subnum<cfg.total_subs) return(cfg.grp[cfg.sub[smb.subnum]->grp]->sname); return(nulstr); } if(!strcmp(sp,"SMB_GROUP_DESC")) { if(smb.subnum!=INVALID_SUB && smb.subnum<cfg.total_subs) return(cfg.grp[cfg.sub[smb.subnum]->grp]->lname); return(nulstr); } if(!strcmp(sp,"SMB_GROUP_NUM")) { if(smb.subnum!=INVALID_SUB && smb.subnum<cfg.total_subs) safe_snprintf(str,maxlen,"%u",getusrgrp(smb.subnum)); return(str); } if(!strcmp(sp,"SMB_SUB")) { if(smb.subnum==INVALID_SUB) return("Mail"); else if(smb.subnum<cfg.total_subs) return(cfg.sub[smb.subnum]->sname); return(nulstr); } if(!strcmp(sp,"SMB_SUB_DESC")) { if(smb.subnum==INVALID_SUB) return("Mail"); else if(smb.subnum<cfg.total_subs) return(cfg.sub[smb.subnum]->lname); return(nulstr); } if(!strcmp(sp,"SMB_SUB_CODE")) { if(smb.subnum==INVALID_SUB) return("MAIL"); else if(smb.subnum<cfg.total_subs) return(cfg.sub[smb.subnum]->code); return(nulstr); } if(!strcmp(sp,"SMB_SUB_NUM")) { if(smb.subnum!=INVALID_SUB && smb.subnum<cfg.total_subs) safe_snprintf(str,maxlen,"%u",getusrsub(smb.subnum)); return(str); } if(!strcmp(sp,"SMB_MSGS")) { safe_snprintf(str,maxlen,"%ld",smb.msgs); return(str); } if(!strcmp(sp,"SMB_CURMSG")) { safe_snprintf(str,maxlen,"%ld",smb.curmsg+1); return(str); } if(!strcmp(sp,"SMB_LAST_MSG")) { safe_snprintf(str,maxlen,"%lu",smb.status.last_msg); return(str); } if(!strcmp(sp,"SMB_MAX_MSGS")) { safe_snprintf(str,maxlen,"%lu",smb.status.max_msgs); return(str); } if(!strcmp(sp,"SMB_MAX_CRCS")) { safe_snprintf(str,maxlen,"%lu",smb.status.max_crcs); return(str); } if(!strcmp(sp,"SMB_MAX_AGE")) { safe_snprintf(str,maxlen,"%hu",smb.status.max_age); return(str); } if(!strcmp(sp,"SMB_TOTAL_MSGS")) { safe_snprintf(str,maxlen,"%lu",smb.status.total_msgs); return(str); } return(NULL); }
u_char * var_diskio(struct variable * vp, oid * name, size_t * length, int exact, size_t * var_len, WriteMethod ** write_method) { static long long_ret; unsigned int indx; if (getstats() == 0) return 0; if (header_simple_table (vp, name, length, exact, var_len, write_method, ndisk)) return NULL; indx = (unsigned int) (name[*length - 1] - 1); if (indx >= ndisk) return NULL; switch (vp->magic) { case DISKIO_INDEX: long_ret = (long) indx + 1; return (u_char *) & long_ret; case DISKIO_DEVICE: *var_len = strlen(dkname[indx]); return (u_char *) dkname[indx]; case DISKIO_NREAD: #ifdef HW_DISKSTATS long_ret = dk[indx].dk_rbytes; #endif #ifdef HW_IOSTATS if (dk[indx].type == IOSTAT_DISK) long_ret = dk[indx].rbytes; #endif return (u_char *) & long_ret; case DISKIO_NWRITTEN: #ifdef HW_DISKSTATS long_ret = dk[indx].dk_wbytes; #endif #ifdef HW_IOSTATS if (dk[indx].type == IOSTAT_DISK) long_ret = dk[indx].wbytes; #endif return (u_char *) & long_ret; case DISKIO_READS: #ifdef HW_DISKSTATS long_ret = dk[indx].dk_rxfer; #endif #ifdef HW_IOSTATS if (dk[indx].type == IOSTAT_DISK) long_ret = dk[indx].rxfer; #endif return (u_char *) & long_ret; case DISKIO_WRITES: #ifdef HW_DISKSTATS long_ret = dk[indx].dk_wxfer; #endif #ifdef HW_IOSTATS if (dk[indx].type == IOSTAT_DISK) long_ret = dk[indx].wxfer; #endif return (u_char *) & long_ret; default: ERROR_MSG("diskio.c: don't know how to handle this request."); } return NULL; }