[ofw] [PATCH] ttcp.c - add scaled atoi() routine.
Smith, Stan
stan.smith at intel.com
Wed Oct 26 11:38:44 PDT 2011
Add getScaledInt(char*) routine to faciliate switch argument scaling ease (-b32K or -l 1G).
Valid for switches -n, -l, -A, -O, -b
Signed-off-by: stan smith (stan.smith at intelcom)
--- tests/wsd/user/ttcp/ttcp.c Mon Nov 15 12:57:28 2010
+++ tests/wsd/user/ttcp/ttcp.c Mon Oct 24 14:02:17 2011
@@ -141,6 +141,38 @@
double time_elapsed();
char *outfmt();
+/*
+ * input a scaled (K, M or G) integer. Suitable for use with getopt.
+ *
+ * inputs:
+ * *s C string representing an interger value with optional Scale char.
+ * 'xK' imples x * 1024, 'xM' implies x*1024*1024,'xG' implies x*1024*1024*1024
+ *
+ * output:
+ * binary integer representation.
+ */
+
+static int
+getScaledInt(char *s)
+{
+ int val;
+ char *e;
+
+ val = strtol(s,&e,0);
+ if (e == NULL || *e =='\0')
+ return val;
+
+ if (*e == 'k' || *e == 'K')
+ val *= 1024;
+ else if (*e == 'm' || *e == 'M')
+ val *= 1024*1024;
+ else if (*e == 'g' || *e == 'G')
+ val *= 1024*1024*1024;
+
+ return val;
+}
+
+
int __cdecl main(int argc, char **argv)
{
SYSTEMTIME time0, time1;
@@ -663,10 +695,10 @@
#endif
break;
case 'n':
- nbuf = atoi(optarg);
+ nbuf = getScaledInt(optarg);
break;
case 'l':
- buflen = atoi(optarg);
+ buflen = getScaledInt(optarg);
break;
case 'p':
port = (short)atoi(optarg);
@@ -675,14 +707,14 @@
udp = 1;
break;
case 'A':
- bufalign = atoi(optarg);
+ bufalign = getScaledInt(optarg);
break;
case 'O':
- bufoffset = atoi(optarg);
+ bufoffset = getScaledInt(optarg);
break;
case 'b':
#if defined(SO_SNDBUF) || defined(SO_RCVBUF)
- sockbufsize = atoi(optarg);
+ sockbufsize = getScaledInt(optarg);
#else
fprintf(stderr,
"ttcp: -b option ignored: SO_SNDBUF/SO_RCVBUF socket options not supported\n");
More information about the ofw
mailing list