int my_printf(const char *format, ...) { t_struct_arg args; unsigned int i; unsigned int cwrite; i = 0; cwrite = 0; va_start(args.arg, format); while (format[i]) { va_start(args.arg_tmp, format); if (format[i] == CPUR && is_to_convert(format + i) != 0) { cwrite += check_print(&args, format, i, cwrite) - 1; i += is_to_convert(format + i); } else my_putchar(format[i]); cwrite += 1; va_end(args.arg_tmp); ++i; } va_end(args.arg); return ((int)cwrite); }
boolean item_print(WINDOW *wd, int n, int *list) { int i = 0, button, result = 0; boolean noerror = TRUE; /* DjV 031 070203 ---vvv--- */ /* XDINFO info; */ long nfiles=0, nfolders=0, nbytes=0, error; const char *name; /* DjV 031 070203 ---^^^--- */ if (check_print(wd, n, list) == FALSE) return FALSE; /* DjV 031 080203 ---vvv--- */ /* rsc_ltoftext(print, NITEMS, n); */ /* xd_open(print, &info); */ if ( count_items(wd, n, list, &nfolders, &nfiles, &nbytes) ) /* HR 151102: always display. */ { /* DjV 031 140203 */ cv_fntoform ( copyinfo + CPFOLDER, fn_get_name(dir_path(wd)) ); /* DjV 031 140203 */ cv_fntoform ( copyinfo + CPFILE, itm_name(wd, list[0]) ); /* DjV 031 140203 */ button = open_cfdialog( CF_PRINT, 0L, (long)n, nbytes, CMD_PRINT ); /* DJV 031 070203 */ } /* DjV 031 140203 */ else button = 0; /* if (button == PRINTOK) */ if ( button == COPYOK ) /* DjV 031 080203 ---^^^--- */ { if ((i < n) && (result != XFATAL) && (result != XABORT)) { /* DjV 031 080203 ---vvv--- */ name = itm_name(wd, list[i]); upd_name( dir_path(wd), CPFOLDER ); upd_name ( name, CPFILE ); /* DjV 031 080203 ---^^^--- */ result = print_file(wd, list[i]); if (result == XFATAL) noerror = FALSE; /* DJV 031 070203 150203 ---vvv--- */ /* rsc_ltoftext(print, NITEMS, n - i - 1); xd_draw(&info, NITEMS, 1); */ if ((error = itm_attrib(wd, list[i], 0, &pattr)) == 0) { nbytes -= pattr.size; upd_copyinfo ( 0L, n - i - 1, nbytes ); } else result = copy_error(error, name, 0); /* 0= any op but move or delete is "copy" */ /* DjV 031 070203 150203 ---^^^--- */ i++; } } else noerror = FALSE; /* DjV 031 070203 ---vvv--- */ /* xd_change(&info, button, NORMAL, 0); xd_close(&info); */ if ( button != 0 ) close_cfdialog( button ); /* DjV 031 070203 ---^^^--- */ return noerror; }
int cal_inf(struct packet_info * p){ int t; // type of bands t = wap_type(p->dev_name); if(t == -1){ printk(KERN_DEBUG "[warning]wAP dosen't have this kind of interface!\n"); return; } if(p->phy_rate == 0 && p->ampdu != 2){ printk(KERN_DEBUG "[warning]There is one packet whose phyrate == 0!\n"); memcpy(&last_p[t],p,sizeof(last_p[t]));// update last p previous_is_ampdu[t] = p->ampdu; return; } struct timespec th={0},transmit={0},dmaci={0},tmp1={0},tmp2={0},difs={0},tr={0}; if (previous_is_ampdu[t] != 0){ if (p->ampdu != 2){ dmaci = cal_dmaci_ampdu(t); if (ampdu[t].retry > 0){ // all packets are retried packets update_summary_ht(dmaci,ampdu[t].len*ampdu[t].num,ampdu[t].num,t); }else{ divide_inf(backup_store[t],ampdu[t].th,ampdu[t].te,dmaci,0,1,t); update_summary_cs(dmaci,ampdu[t].len*ampdu[t].num,1,t);//overall busywait, ampdu regards as one } clear_timespec(&tmp1); tmp1 = timespec_sub(ampdu[t].te,ampdu[t].th); summary[t].overall_extra_time = timespec_add(summary[t].overall_extra_time,tmp1);//overall transmit summary[t].wing = summary[t].wing + timespec_div(dmaci,tmp1); printk(KERN_DEBUG "[ampdu,%ld.%ld]%ld.%ld,%d,%ld.%ld,%ld.%ld,ifindex=%d,%s,num=%d,size=%d,retry=%d\n",ampdu[t].tw.tv_sec,ampdu[t].tw.tv_nsec,ampdu[t].te.tv_sec,ampdu[t].te.tv_nsec,ampdu[t].rate,dmaci.tv_sec,dmaci.tv_nsec,tmp1.tv_sec,tmp1.tv_nsec,ampdu[t].ifindex,ampdu[t].dev_name,ampdu[t].num,ampdu[t].len,ampdu[t].retry); //clear the ampdu structure memset(&du[t],0,sizeof(ampdu[t])); } } if(p->ampdu == 1){ //first packet of aggregation backup_sniffer_packet(p->tw,p->te,1,t); ampdu[t].rate = p->phy_rate; ampdu[t].ifindex = p->ifindex; memcpy(ampdu[t].dev_name,p->dev_name,IFNAMSIZ); copy_timespec(&du[t].te,&p->te); copy_timespec(&du[t].last_te,&last_p[t].te); copy_timespec(&du[t].tw,&p->tw); ampdu[t].num = 1; ampdu[t].len = p->len; memcpy(&last_p[t],p,sizeof(last_p[t]));// update last p check_print(p,t); if (p->wlan_retry > 0){ ampdu[t].retry = p->wlan_retry; } previous_is_ampdu[t] = p->ampdu; }else if(p->ampdu==2){ //rest of packets of aggregation p->phy_rate = ampdu[t].rate; copy_timespec(&du[t].tw,&p->tw); ampdu[t].num = ampdu[t].num + 1; if ( p->wlan_retry >= 1){ update_ht_transmit(p->len,p->phy_rate,t); } }else{ // non-aggregation packet th.tv_sec = p->tw.tv_sec; th.tv_nsec = p->tw.tv_nsec; if (timespec_compare(&th,&last_p[t].te)<0){ th=last_p[t].te; } memcpy(&last_p[t],p,sizeof(last_p[t])); //update previous packet if (p->tw.tv_nsec == 0){ previous_is_ampdu[t] = p->ampdu; return; } transmit = cal_transmit_time(p->len,p->phy_rate); difs.tv_sec =0; difs.tv_nsec = CONST_TIME[t]*1000; tmp1 = timespec_sub(p->te,th); tmp2 = timespec_sub(tmp1,transmit); dmaci = timespec_sub(tmp2,difs); if (dmaci.tv_sec < 0 || dmaci.tv_nsec < 0){ dmaci.tv_sec = 0; dmaci.tv_nsec = 0; } if(p->wlan_retry == 0){ update_summary_cs(dmaci,p->len,1,t); divide_inf(store[t],th,p->te,dmaci,p->wlan_retry,0,t); }else{ update_summary_ht(dmaci,p->len,1,t); } summary[t].overall_extra_time = timespec_add(summary[t].overall_extra_time,tmp1); summary[t].wing = summary[t].wing + timespec_div(dmaci,tmp1); printk(KERN_DEBUG "[unampdu,%ld.%ld]%ld.%ld,%d,%ld.%ld,%ld.%ld,ifindex=%d,%s,num=%d,size=%d,retry=%d\n",p->tw.tv_sec,p->tw.tv_nsec,p->te.tv_sec,p->te.tv_nsec,p->phy_rate,dmaci.tv_sec,dmaci.tv_nsec,tmp1.tv_sec,tmp1.tv_nsec,p->ifindex,p->dev_name,1,p->len,p->wlan_retry); check_print(p,t); previous_is_ampdu[t] = p->ampdu; } }