#include <sys/types.h> #include <sys/time.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> #include "merc.h" int advatoi (const char *s) { char string[MAX_INPUT_LENGTH]; char *stringptr = string; char tempstring[2]; int number = 0; int multiplier = 0; strcpy (string, s); while (isdigit (*stringptr)) { strncpy (tempstring, stringptr, 1); number = (number * 10) + atoi (tempstring); stringptr++; } switch (UPPER (*stringptr)) { case 'K': multiplier = 1000; number *= multiplier; stringptr++; break; case 'M': multiplier = 1000000; number *= multiplier; stringptr++; break; case '\0': break; default: return 0; } while (isdigit (*stringptr) && (multiplier > 1)) { strncpy (tempstring, stringptr, 1); multiplier = multiplier / 10; number = number + (atoi (tempstring) * multiplier); stringptr++; } if (*stringptr != '\0' && !isdigit (*stringptr)) return 0; return (number); } int parsebid (const int currentbid, const char *argument) { int newbid = 0; char string[MAX_INPUT_LENGTH]; char *stringptr = string; strcpy (string, argument); if (*stringptr) { if (isdigit (*stringptr)) newbid = advatoi (stringptr); else if (*stringptr == '+') { if (strlen (stringptr) == 1) newbid = (currentbid * 125) / 100; else newbid = (currentbid * (100 + atoi (++stringptr))) / 100; } else { if ((*stringptr == '*') || (*stringptr == 'x')) { if (strlen (stringptr) == 1) newbid = currentbid * 2; else newbid = currentbid * atoi (++stringptr); } } } return newbid; }