No longer needed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12373 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
29b949de52
commit
fc26cdb2a8
@ -1,157 +0,0 @@
|
|||||||
/*
|
|
||||||
** Copyright (c) 2004 OBOS
|
|
||||||
** Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
** of this software and associated documentation files (the "Software"), to deal
|
|
||||||
** in the Software without restriction, including without limitation the rights
|
|
||||||
** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
** copies of the Software, and to permit persons to whom the Software is
|
|
||||||
** furnished to do so, subject to the following conditions:
|
|
||||||
**
|
|
||||||
** The above copyright notice and this permission notice shall be included in all
|
|
||||||
** copies or substantial portions of the Software.
|
|
||||||
**
|
|
||||||
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
** AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
** OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
** SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <getopt.h>
|
|
||||||
#include <limits.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <OS.h>
|
|
||||||
|
|
||||||
const bigtime_t microsPerSecond=1000000;
|
|
||||||
|
|
||||||
static bigtime_t process_arg(char *fromString);
|
|
||||||
static void warn_invalid(char *invalidArg);
|
|
||||||
static void usage(void);
|
|
||||||
static void version(void);
|
|
||||||
|
|
||||||
char *progName;
|
|
||||||
|
|
||||||
static bigtime_t
|
|
||||||
process_arg(char *fromString)
|
|
||||||
{
|
|
||||||
bigtime_t microSeconds=0;
|
|
||||||
bool endOfString=false;
|
|
||||||
int i=0;
|
|
||||||
while (i<20 && !endOfString) // Any more than 5 digits is ridiculous, but 20 is possible...
|
|
||||||
switch (fromString[i++]) {
|
|
||||||
case '0': microSeconds*=10;break;
|
|
||||||
case '1': microSeconds=10*microSeconds+1;break;
|
|
||||||
case '2': microSeconds=10*microSeconds+2;break;
|
|
||||||
case '3': microSeconds=10*microSeconds+3;break;
|
|
||||||
case '4': microSeconds=10*microSeconds+4;break;
|
|
||||||
case '5': microSeconds=10*microSeconds+5;break;
|
|
||||||
case '6': microSeconds=10*microSeconds+6;break;
|
|
||||||
case '7': microSeconds=10*microSeconds+7;break;
|
|
||||||
case '8': microSeconds=10*microSeconds+8;break;
|
|
||||||
case '9': microSeconds=10*microSeconds+9;break;
|
|
||||||
case 'u': case 'U': endOfString=true; break;
|
|
||||||
case 'i': case 'I': microSeconds*=1000; endOfString=true;break;
|
|
||||||
case 's': case 'S': case '\0': microSeconds*=microsPerSecond; endOfString=true; break;
|
|
||||||
case 'm': case 'M': microSeconds*= (60*microsPerSecond);endOfString=true; break;
|
|
||||||
case 'h': case 'H': microSeconds*= (3600*microsPerSecond);endOfString=true; break;
|
|
||||||
case 'd': case 'D': microSeconds*= (86400*microsPerSecond);endOfString=true; break;
|
|
||||||
}
|
|
||||||
if (fromString[i-1]!='\0' && fromString[i]!='\0')
|
|
||||||
warn_invalid(fromString);
|
|
||||||
return (microSeconds);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
warn_invalid(char *invalidArg)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "%s: invalid time interval `%s'\n", progName, invalidArg);
|
|
||||||
fprintf(stdout, "Try `%s --help' for more information.\n", progName);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
usage(void)
|
|
||||||
{
|
|
||||||
fprintf(stderr,
|
|
||||||
"%s OBOS (http://www.openbeos.org/)
|
|
||||||
|
|
||||||
Usage: %s [OPTION]... NUMBER[SUFFIX]
|
|
||||||
|
|
||||||
SUFFIX may be:
|
|
||||||
|
|
||||||
u microseconds
|
|
||||||
i milliseconds
|
|
||||||
s seconds (default if no SUFFIX given)
|
|
||||||
m minutes
|
|
||||||
h hours
|
|
||||||
d days
|
|
||||||
|
|
||||||
--help display this help and exit
|
|
||||||
--version output version information and exit
|
|
||||||
|
|
||||||
Pause for NUMBER seconds.
|
|
||||||
|
|
||||||
", progName, progName );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
version(void)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "%s OBOS (http://www.openbeos.org/)\n", progName);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
int argOption;
|
|
||||||
int indexptr = 0;
|
|
||||||
char * const * optargv = argv;
|
|
||||||
bigtime_t sleepTotal = 0; // in microseconds actually.
|
|
||||||
|
|
||||||
struct option options[] = {
|
|
||||||
{ "help", no_argument, NULL, 1 },
|
|
||||||
{ "version", no_argument, NULL, 2 },
|
|
||||||
{ NULL,0,NULL,0}
|
|
||||||
};
|
|
||||||
|
|
||||||
progName = argv[0];
|
|
||||||
|
|
||||||
while ((argOption = getopt_long(argc, optargv, "", options, &indexptr)) != -1) {
|
|
||||||
switch (argOption) {
|
|
||||||
case 1: // help
|
|
||||||
usage();
|
|
||||||
break;
|
|
||||||
case 2: // version
|
|
||||||
version();
|
|
||||||
break;
|
|
||||||
default: // Should not be possible to get here!
|
|
||||||
fprintf (stderr,"HUGE problems with getopt_long!\n");
|
|
||||||
exit(1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (argc - optind > 0) {
|
|
||||||
for ( int i=optind; i<argc; i++ )
|
|
||||||
if ((argv[i][0] >= '0') && (argv[i][0] <= '9'))
|
|
||||||
sleepTotal += process_arg(argv[i]);
|
|
||||||
else
|
|
||||||
warn_invalid(argv[optind]);
|
|
||||||
snooze(sleepTotal);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
usage();
|
|
||||||
|
|
||||||
return B_NO_ERROR;
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user