本文整理匯總了C++中EARGF函數的典型用法代碼示例。如果您正苦於以下問題:C++ EARGF函數的具體用法?C++ EARGF怎麽用?C++ EARGF使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了EARGF函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C++代碼示例。
示例1: main
int
main(int argc, char *argv[])
{
size_t jf[2] = { jfield, jfield, };
FILE *fp[2];
int ret = 0, n;
char *fno;
ARGBEGIN {
case '1':
jf[0] = estrtonum(EARGF(usage()), 1, MIN(LLONG_MAX, SIZE_MAX));
break;
case '2':
jf[1] = estrtonum(EARGF(usage()), 1, MIN(LLONG_MAX, SIZE_MAX));
break;
case 'a':
fno = EARGF(usage());
if (strcmp(fno, "1") == 0)
unpairsa = 1;
else if (strcmp(fno, "2") == 0)
unpairsb = 1;
else
usage();
break;
case 'e':
replace = EARGF(usage());
break;
case 'o':
oflag = 1;
initolist(&output);
makeolist(&output, EARGF(usage()));
break;
case 't':
sep = EARGF(usage());
break;
case 'v':
pairs = 0;
fno = EARGF(usage());
if (strcmp(fno, "1") == 0)
unpairsa = 1;
else if (strcmp(fno, "2") == 0)
unpairsb = 1;
else
usage();
break;
default:
usage();
} ARGEND;
if (sep)
seplen = unescape(sep);
if (argc != 2)
usage();
for (n = 0; n < 2; n++) {
if (!strcmp(argv[n], "-")) {
argv[n] = "<stdin>";
fp[n] = stdin;
} else if (!(fp[n] = fopen(argv[n], "r"))) {
eprintf("fopen %s:", argv[n]);
}
}
jf[0]--;
jf[1]--;
join(fp[0], fp[1], jf[0], jf[1]);
if (oflag)
freespecs(&output);
if (fshut(fp[0], argv[0]) | (fp[0] != fp[1] && fshut(fp[1], argv[1])) |
fshut(stdout, "<stdout>"))
ret = 2;
return ret;
}
示例2: main
INT main(UINT argc, PTCHAR argv[]) {
CONST PTCHAR Banner =
"\t\t \t\n"
"\t\t ## ## ######## ## ## ######## \t\n"
"\t\t ## ## ## ## ## ## ## \t\n"
"\t\t ## ## ## ## ## ## ## \t\n"
"\t\t ######### ###### ## ## ## ## \t\n"
"\t\t ## ## ## ## ## ## ## \t\n"
"\t\t ## ## ## ## ## ## ## \t\n"
"\t\t ## ## ######## ### ######## \t\n"
"\t\t \t\n"
"\t\t HackSys Extreme Vulnerable Driver Exploits \t\n"
"\t\t Ashfaq Ansari (@HackSysTeam) \t\n"
"\t\t ashfaq[at]payatu[dot]com \t\n"
"\t\t \t\n";
PTCHAR CommandToExecute = NULL;
EXPLOIT_VULNERABILITY ExploitVulnerability;
ClearScreen();
CenterConsoleScreen();
// Print the banner
DEBUG_SUCCESS(Banner);
if (argc < 3) {
ShowUsage(argv[0]);
}
// Parse the command line arguments
ARGBEGIN {
case 'p':
ExploitVulnerability.VulnerabilityType = PoolOverflow;
break;
case 'u':
ExploitVulnerability.VulnerabilityType = UseAfterFree;
break;
case 't':
ExploitVulnerability.VulnerabilityType = TypeConfusion;
break;
case 's':
ExploitVulnerability.VulnerabilityType = StackOverflow;
break;
case 'i':
ExploitVulnerability.VulnerabilityType = IntegerOverflow;
break;
case 'g':
ExploitVulnerability.VulnerabilityType = StackOverflowGS;
break;
case 'a':
ExploitVulnerability.VulnerabilityType = ArbitraryOverwrite;
break;
case 'h':
ExploitVulnerability.VulnerabilityType = UninitializedHeapVariable;
break;
case 'v':
ExploitVulnerability.VulnerabilityType = UninitializedStackVariable;
break;
case 'n':
ExploitVulnerability.VulnerabilityType = NullPointerDereference;
break;
case 'c':
ExploitVulnerability.Command = EARGF(ShowUsage(argv[0]));
break;
default:
ShowUsage(argv[0]);
} ARGEND;
// Start the exploitation
Exploit(&ExploitVulnerability);
return EXIT_SUCCESS;
}
示例3: main
void
main(int argc, char *argv[])
{
char *file;
char *rcmd, *wcmd;
int fd0, fd1, ifd0, ifd1, dupflag;
rfork(RFNOTEG);
dupflag = 0;
rcmd = wcmd = nil;
ARGBEGIN{
case 'd':
dupflag = 1;
break;
case 'r':
rcmd = EARGF(usage());
break;
case 'w':
wcmd = EARGF(usage());
break;
default:
usage();
}ARGEND
if(argc!=1 || (rcmd==nil && wcmd==nil))
usage();
if(rcmd == nil)
rcmd = "/bin/cat";
if(wcmd == nil)
wcmd = "/bin/cat";
file = argv[0];
if(dupflag){
ifd0 = open(file, ORDWR);
if(ifd0 < 0)
sysfatal("open %s: %r", file);
ifd1 = dup(ifd0, -1);
}else{
ifd0 = open(file, OREAD);
if(ifd0 < 0)
sysfatal("open %s: %r", file);
ifd1 = open(file, OWRITE);
if(ifd1 < 0)
sysfatal("open %s: %r", file);
}
if(bind("#|", TEMP, MREPL) < 0)
sysfatal("bind pipe %s: %r", TEMP);
if(bind(TEMP "/data", file, MREPL) < 0)
sysfatal("bind %s %s: %r", TEMP "/data", file);
fd0 = open(TEMP "/data1", OREAD);
if(fd0 < 0)
sysfatal("open %s: %r", TEMP "/data1");
connect(wcmd, fd0, ifd1);
fd1 = open(TEMP "/data1", OWRITE);
if(fd1 < 0)
sysfatal("open %s: %r", TEMP "/data1");
connect(rcmd, ifd0, fd1);
unmount(nil, TEMP);
exits(nil);
}
示例4: main
void
main(int argc, char **argv)
{
char dat[MaxStr], buf[MaxStr], cmd[MaxStr], *p, *err;
int ac, fd, ms, data;
char *av[10];
quotefmtinstall();
origargs = procgetname();
/* see if we should use a larger message size */
fd = open("/dev/draw", OREAD);
if(fd > 0){
ms = iounit(fd);
if(msgsize < ms+IOHDRSZ)
msgsize = ms+IOHDRSZ;
close(fd);
}
user = getuser();
if(user == nil)
fatal(1, "can't read user name");
ARGBEGIN{
case 'a':
p = EARGF(usage());
if(setam(p) < 0)
fatal(0, "unknown auth method %s", p);
break;
case 'e':
ealgs = EARGF(usage());
if(*ealgs == 0 || strcmp(ealgs, "clear") == 0)
ealgs = nil;
break;
case 'd':
dbg++;
break;
case 'f':
/* ignored but accepted for compatibility */
break;
case 'R': /* From listen */
remoteside();
break;
case 'h':
system = EARGF(usage());
break;
case 'c':
cflag++;
cmd[0] = '!';
cmd[1] = '\0';
while(p = ARGF()) {
strcat(cmd, " ");
strcat(cmd, p);
}
break;
case 'k':
keyspec = smprint("%s %s", keyspec, EARGF(usage()));
break;
case 'P':
patternfile = EARGF(usage());
break;
case 'u':
user = EARGF(usage());
keyspec = smprint("%s user=%s", keyspec, user);
break;
default:
usage();
}ARGEND;
if(argc != 0)
usage();
if(system == nil) {
p = getenv("cpu");
if(p == 0)
fatal(0, "set $cpu");
system = p;
}
if(err = rexcall(&data, system, srvname))
fatal(1, "%s: %s", err, system);
procsetname("%s", origargs);
/* Tell the remote side the command to execute and where our working directory is */
if(cflag)
writestr(data, cmd, "command", 0);
if(getwd(dat, sizeof(dat)) == 0)
writestr(data, "NO", "dir", 0);
else
writestr(data, dat, "dir", 0);
/* start up a process to pass along notes */
lclnoteproc(data);
/*
* Wait for the other end to execute and start our file service
* of /mnt/term
*/
if(readstr(data, buf, sizeof(buf)) < 0)
fatal(1, "waiting for FS: %r");
if(strncmp("FS", buf, 2) != 0) {
//.........這裏部分代碼省略.........
示例5: main
void
main(int argc, char **argv)
{
char *f[10], *local, *name, *remote, *s, *t, verb;
int fd, havedb, havelocal, i, k, n, nf, resolve1, skip;
int checkedmatch1, checkedmatch2,
checkedmatch3, checkedmatch4;
ulong now;
Biobuf bin;
Dir dbd, ld, nd, rd;
Avlwalk *w;
Entry *e;
membogus(argv);
quotefmtinstall();
ARGBEGIN{
case 's':
case 'c':
i = ARGC();
addresolve(i, EARGF(usage()));
break;
case 'n':
donothing = 1;
verbose = 1;
break;
case 'S':
safeinstall = 0;
break;
case 'T':
timefile = EARGF(usage());
break;
case 't':
tempspool = 0;
break;
case 'u':
douid = 1;
break;
case 'v':
verbose++;
break;
default:
usage();
}ARGEND
if(argc < 3)
usage();
if(timefile)
readtimefile();
lroot = argv[1];
if(!isdir(lroot))
sysfatal("bad local root directory");
rroot = argv[2];
if(!isdir(rroot))
sysfatal("bad remote root directory");
match = argv+3;
nmatch = argc-3;
for(i=0; i<nmatch; i++)
if(match[i][0] == '/')
match[i]++;
if((clientdb = opendb(argv[0])) == nil)
sysfatal("opendb %q: %r", argv[2]);
copyerr = opendb(nil);
skip = 0;
Binit(&bin, 0, OREAD);
for(; s=Brdstr(&bin, '\n', 1); free(s)){
t = estrdup(s);
nf = tokenize(s, f, nelem(f));
if(nf != 10 || strlen(f[2]) != 1){
skip = 1;
fprint(2, "warning: skipping bad log entry <%s>\n", t);
free(t);
continue;
}
free(t);
now = strtoul(f[0], 0, 0);
n = atoi(f[1]);
verb = f[2][0];
name = f[3];
if(now < maxnow || (now==maxnow && n <= maxn))
continue;
local = mkname(localbuf, sizeof localbuf, lroot, name);
if(strcmp(f[4], "-") == 0)
f[4] = f[3];
remote = mkname(remotebuf, sizeof remotebuf, rroot, f[4]);
rd.name = f[4];
rd.mode = strtoul(f[5], 0, 8);
rd.uid = f[6];
rd.gid = f[7];
rd.mtime = strtoul(f[8], 0, 10);
rd.length = strtoll(f[9], 0, 10);
havedb = finddb(clientdb, name, &dbd)>=0;
havelocal = localdirstat(local, &ld)>=0;
resolve1 = resolve(name);
//.........這裏部分代碼省略.........
示例6: cpumain
void
cpumain(int argc, char **argv)
{
char dat[MaxStr], buf[MaxStr], cmd[MaxStr], *err, *secstoreserver, *p, *s;
int fd, ms, data;
/* see if we should use a larger message size */
fd = open("/dev/draw", OREAD);
if(fd > 0){
ms = iounit(fd);
if(msgsize < ms+IOHDRSZ)
msgsize = ms+IOHDRSZ;
close(fd);
}
user = getenv("USER");
if(user == nil)
user = readcons("user", nil, 0);
secstoreserver = nil;
authserver = getenv("auth");
if(authserver == nil)
authserver = "lookout.cs.bell-labs.com";
system = getenv("cpu");
if(system == nil)
system = "anna.cs.bell-labs.com";
ARGBEGIN{
case 'o':
authserver = "plan9.bell-labs.com";
system = "plan9.bell-labs.com";
break;
case 'a':
authserver = EARGF(usage());
break;
case 'c':
system = EARGF(usage());
break;
case 'd':
dbg++;
break;
case 'e':
ealgs = EARGF(usage());
if(*ealgs == 0 || strcmp(ealgs, "clear") == 0)
ealgs = nil;
break;
case 'C':
cflag++;
cmd[0] = '!';
cmd[1] = '\0';
while((p = ARGF()) != nil) {
strcat(cmd, " ");
strcat(cmd, p);
}
break;
case 'k':
keyspec = EARGF(usage());
break;
case 'u':
user = EARGF(usage());
break;
case 's':
secstoreserver = EARGF(usage());
break;
default:
usage();
}ARGEND;
if(argc != 0)
usage();
if(mountfactotum() < 0){
if(secstoreserver == nil)
secstoreserver = authserver;
if(havesecstore(secstoreserver, user)){
s = secstorefetch(secstoreserver, user, nil);
if(s){
if(strlen(s) >= sizeof secstorebuf)
sysfatal("secstore data too big");
strcpy(secstorebuf, s);
}
}
}
if((err = rexcall(&data, system, srvname)))
fatal(1, "%s: %s", err, system);
/* Tell the remote side the command to execute and where our working directory is */
if(cflag)
writestr(data, cmd, "command", 0);
if(getcwd(dat, sizeof(dat)) == 0)
writestr(data, "NO", "dir", 0);
else
writestr(data, dat, "dir", 0);
/*
* Wait for the other end to execute and start our file service
* of /mnt/term
*/
if(readstr(data, buf, sizeof(buf)) < 0)
fatal(1, "waiting for FS: %r");
if(strncmp("FS", buf, 2) != 0) {
//.........這裏部分代碼省略.........
示例7: threadmain
void
threadmain(int argc, char **argv)
{
int fd, i, nd;
char *err, *mnt, *srv;
Dir *d;
srv = "usb";
mnt = "/dev";
ARGBEGIN{
case 'D':
usbfsdebug++;
break;
case 'd':
usbdebug++;
break;
case 's':
srv = EARGF(usage());
break;
case 'i':
pollms = atoi(EARGF(usage()));
break;
case 'm':
mnt = EARGF(usage());
break;
default:
usage();
}ARGEND;
if(access("/dev/usb", AEXIST) < 0 && bind("#u", "/dev", MBEFORE) < 0)
sysfatal("#u: %r");
args();
fmtinstall('U', Ufmt);
quotefmtinstall();
rfork(RFNOTEG);
portc = chancreate(sizeof(char *), 0);
if(portc == nil)
sysfatal("chancreate");
proccreate(work, portc, Stack);
if(argc == 0){
fd = open("/dev/usb", OREAD);
if(fd < 0)
sysfatal("/dev/usb: %r");
nd = dirreadall(fd, &d);
close(fd);
if(nd < 2)
sysfatal("/dev/usb: no hubs");
for(i = 0; i < nd; i++)
if(strcmp(d[i].name, "ctl") != 0)
sendp(portc, smprint("/dev/usb/%s", d[i].name));
free(d);
}else
for(i = 0; i < argc; i++)
sendp(portc, strdup(argv[i]));
sendp(portc, nil);
err = recvp(portc);
chanfree(portc);
usbfsexits(0);
usbfsinit(srv, mnt, &usbdirfs, MAFTER);
snprint(ctlfs.name, sizeof(ctlfs.name), "usbdctl");
usbfsadd(&ctlfs);
threadexits(err);
}
示例8: threadmain
void
threadmain(int argc, char *argv[])
{
Column *c;
char buf[256];
int i, ncol;
rfork(RFENVG|RFNAMEG);
ncol = 1;
ARGBEGIN{
case 'c':
ncol = atoi(EARGF(usage()));
if(ncol <= 0)
usage();
break;
case 'm':
webmountpt = EARGF(usage());
break;
case 'p':
procstderr++;
break;
case 't':
charset = EARGF(usage());
break;
default:
usage();
break;
}ARGEND
snprint(buf, sizeof(buf), "%s/ctl", webmountpt);
webctlfd = open(buf, ORDWR);
if(webctlfd < 0)
sysfatal("can't initialize webfs: %r");
snarffd = open("/dev/snarf", OREAD|OCEXEC);
if(initdraw(derror, fontnames[0], "abaco") < 0)
sysfatal("can't open display: %r");
memimageinit();
iconinit();
timerinit();
initfontpaths();
cexit = chancreate(sizeof(int), 0);
crefresh = chancreate(sizeof(Page *), 0);
if(cexit==nil || crefresh==nil)
sysfatal("can't create initial channels: %r");
mousectl = initmouse(nil, screen);
if(mousectl == nil)
sysfatal("can't initialize mouse: %r");
mouse = mousectl;
keyboardctl = initkeyboard(nil);
if(keyboardctl == nil)
sysfatal("can't initialize keyboard: %r");
mainpid = getpid();
plumbwebfd = plumbopen("web", OREAD|OCEXEC);
if(plumbwebfd >= 0){
cplumb = chancreate(sizeof(Plumbmsg*), 0);
proccreate(plumbproc, nil, STACK);
}
plumbsendfd = plumbopen("send", OWRITE|OCEXEC);
rowinit(&row, screen->clipr);
for(i=0; i<ncol; i++){
c = rowadd(&row, nil, -1);
if(c==nil && i==0)
error("initializing columns");
}
c = row.col[row.ncol-1];
for(i=0; i<argc; i++)
if(i/WPERCOL >= row.ncol)
readpage(c, argv[i]);
else
readpage(row.col[i/WPERCOL], argv[i]);
flushimage(display, 1);
threadcreate(keyboardthread, nil, STACK);
threadcreate(mousethread, nil, STACK);
threadnotify(shutdown, 1);
recvul(cexit);
threadexitsall(nil);
}
示例9: threadmain
void
threadmain(int argc, char *argv[])
{
int i, printstats;
char *host;
VacFile *f;
fmtinstall('H', encodefmt);
fmtinstall('V', vtscorefmt);
fmtinstall('F', vtfcallfmt);
fmtinstall('t', mtimefmt);
fmtinstall('M', dirmodefmt);
host = nil;
printstats = 0;
ARGBEGIN{
case 'T':
settimes = 1;
break;
case 'V':
chattyventi = 1;
break;
case 'c':
tostdout++;
break;
case 'd':
diff++;
break;
case 'h':
host = EARGF(usage());
break;
case 's':
printstats++;
break;
case 't':
table++;
break;
case 'v':
chatty++;
break;
default:
usage();
}ARGEND
if(argc < 1)
usage();
if(tostdout && diff){
fprint(2, "cannot use -c with -d\n");
usage();
}
conn = vtdial(host);
if(conn == nil)
sysfatal("could not connect to server: %r");
if(vtconnect(conn) < 0)
sysfatal("vtconnect: %r");
fs = vacfsopen(conn, argv[0], VtOREAD, 128);
if(fs == nil)
sysfatal("vacfsopen: %r");
nwant = argc-1;
want = argv+1;
found = vtmallocz(nwant*sizeof found[0]);
if((f = vacfsgetroot(fs)) == nil)
sysfatal("vacfsgetroot: %r");
unvac(f, nil, nil);
for(i=0; i<nwant; i++){
if(want[i] && !found[i]){
fprint(2, "warning: didn't find %s\n", want[i]);
errors++;
}
}
if(errors)
threadexitsall("errors");
if(printstats)
fprint(2, "%lld bytes read, %lld bytes skipped\n",
stats.data, stats.skipdata);
threadexitsall(0);
}
示例10: main
void
main(int argc, char **argv)
{
char *netdir;
char buf[1024];
netdir = nil;
quotefmtinstall();
fmtinstall('I', eipfmt);
starttime = time(0);
ARGBEGIN{
case 'a':
authenticate = 1;
break;
case 'c':
tlscert = EARGF(usage());
break;
case 'D':
Dflag++;
break;
case 'd':
debug++;
break;
case 'f': /* disallow relaying */
fflag = 1;
break;
case 'g':
gflag = 1;
break;
case 'h': /* default domain name */
dom = EARGF(usage());
break;
case 'k': /* prohibited ip address */
addbadguy(EARGF(usage()));
break;
case 'm': /* set mail command */
mailer = mailerpath(EARGF(usage()));
break;
case 'n': /* log peer ip address */
netdir = EARGF(usage());
break;
case 'p':
passwordinclear = 1;
break;
case 'r':
rflag = 1; /* verify sender's domain */
break;
case 's': /* save blocked messages */
sflag = 1;
break;
case 't':
fprint(2, "%s: the -t option is no longer supported, see -c\n",
argv0);
tlscert = "/sys/lib/ssl/smtpd-cert.pem";
break;
default:
usage();
}ARGEND;
nci = getnetconninfo(netdir, 0);
if(nci == nil)
sysfatal("can't get remote system's address: %r");
parseip(rsysip, nci->rsys);
if(mailer == nil)
mailer = mailerpath("send");
if(debug){
snprint(buf, sizeof buf, "%s/smtpdb/%ld", UPASLOG, time(0));
close(2);
if (create(buf, OWRITE | OEXCL, 0662) >= 0) {
seek(2, 0, 2);
fprint(2, "%d smtpd %s\n", getpid(), thedate());
} else
debug = 0;
}
getconf();
if (isbadguy())
exits("banned");
Binit(&bin, 0, OREAD);
if (chdir(UPASLOG) < 0)
syslog(0, "smtpd", "no %s: %r", UPASLOG);
me = sysname_read();
if(dom == 0 || dom[0] == 0)
dom = domainname_read();
if(dom == 0 || dom[0] == 0)
dom = me;
sayhi();
parseinit();
/* allow 45 minutes to parse the header */
atnotify(catchalarm, 1);
alarm(45*60*1000);
zzparse();
exits(0);
}
示例11: threadmain
void
threadmain(int argc, char *argv[])
{
char *mtpt, *s;
char *secstorepw;
char err[ERRMAX];
Dir d;
rfork(RFNOTEG);
mtpt = "/mnt";
extrafactotumdir = 1;
secstorepw = nil;
quotefmtinstall();
fmtinstall('A', attrfmt);
fmtinstall('H', encodefmt);
fmtinstall('N', attrnamefmt);
if(argc == 3 && strcmp(argv[1], "-g") == 0){
gflag(argv[2]);
threadexitsall(nil);
}
ARGBEGIN{
default:
usage();
case 'D':
chatty9p++;
break;
case 'S': /* server: read nvram, no prompting for keys */
askforkeys = 0;
trysecstore = 0;
sflag = 1;
break;
case 'a':
authaddr = EARGF(usage());
break;
case 'd':
debug = 1;
doprivate = 0;
break;
case 'g':
usage();
case 'k': /* reinitialize nvram */
kflag = 1;
break;
case 'm':
mtpt = EARGF(usage());
break;
case 'n':
trysecstore = 0;
break;
case 'p':
doprivate = 0;
break;
case 's':
service = EARGF(usage());
break;
case 'u': /* user: set hostowner */
uflag = 1;
break;
case 'x':
extrafactotumdir = 0;
break;
}ARGEND
if(argc != 0)
usage();
if(doprivate)
private();
initcap();
if(sflag){
s = getnvramkey(kflag ? NVwrite : NVwriteonerr, &secstorepw);
if(s == nil)
fprint(2, "factotum warning: cannot read nvram: %r\n");
else if(ctlwrite(s) < 0)
fprint(2, "factotum warning: cannot add nvram key: %r\n");
if(secstorepw != nil)
trysecstore = 1;
if (s != nil) {
memset(s, 0, strlen(s));
free(s);
}
} else if(uflag)
promptforhostowner();
owner = getuser();
if(trysecstore && havesecstore()){
while(secstorefetch(secstorepw) < 0){
rerrstr(err, sizeof err);
if(strcmp(err, "cancel") == 0)
break;
fprint(2, "secstorefetch: %r\n");
fprint(2, "Enter an empty password to quit.\n");
free(secstorepw);
secstorepw = nil; /* just try nvram pw once */
}
}
//.........這裏部分代碼省略.........
示例12: main
void
main(int argc, char **argv)
{
char *mntpt, *srvpost, srvfile[64];
int backwards = 0, fd, mntflags, oldserver;
quotefmtinstall();
srvpost = nil;
oldserver = 0;
mntflags = MREPL;
ARGBEGIN{
case 'A':
doauth = 0;
break;
case 'a':
mntflags = MAFTER;
break;
case 'b':
mntflags = MBEFORE;
break;
case 'c':
mntflags |= MCREATE;
break;
case 'C':
mntflags |= MCACHE;
break;
case 'd':
debug++;
break;
case 'f':
/* ignored but allowed for compatibility */
break;
case 'O':
case 'o':
oldserver = 1;
break;
case 'E':
if ((encproto = lookup(EARGF(usage()), encprotos)) < 0)
usage();
break;
case 'e':
ealgs = EARGF(usage());
if(*ealgs == 0 || strcmp(ealgs, "clear") == 0)
ealgs = nil;
break;
case 'k':
keyspec = EARGF(usage());
break;
case 'p':
filterp = aan;
break;
case 'n':
anstring = EARGF(usage());
break;
case 's':
srvpost = EARGF(usage());
break;
case 'B':
backwards = 1;
break;
case 'z':
skiptree = 1;
break;
default:
usage();
}ARGEND;
mntpt = 0; /* to shut up compiler */
if(backwards){
switch(argc) {
default:
mntpt = argv[0];
break;
case 0:
usage();
}
} else {
switch(argc) {
case 2:
mntpt = argv[1];
break;
case 3:
mntpt = argv[2];
break;
default:
usage();
}
}
if (encproto == Enctls)
sysfatal("%s: tls has not yet been implemented", argv[0]);
notify(catcher);
alarm(60*1000);
if (backwards)
fd = passive();
else
fd = connect(argv[0], argv[1], oldserver);
//.........這裏部分代碼省略.........
示例13: main
void
main(int argc, char **argv)
{
int fd, i, n;
char buf[10485760];
ARGBEGIN{
case 'd':
verbose = 1;
break;
case 's':
replacesame = atoi(EARGF(usage()));
break;
case 'm':
mindist = atoi(EARGF(usage()));
break;
case 'n':
win = atoi(EARGF(usage()));
minrun = win;
break;
default:
usage();
}ARGEND
switch(argc){
default:
usage();
case 0:
fd = 0;
break;
case 1:
if((fd = open(argv[0], OREAD)) < 0)
sysfatal("open %s: %r", argv[0]);
break;
}
while((n = readn(fd, buf, sizeof buf)) > 0){
data = realloc(data, length+n);
if(data == nil)
sysfatal("realloc: %r");
memmove(data+length, buf, n);
length += n;
if(n < sizeof buf)
break;
}
odat = malloc(length);
if(odat == nil)
sysfatal("malloc: %r");
Binit(&bout, 1, OWRITE);
Bprint(&bout, "BLZ\n");
Bputint(&bout, length);
outn = 1;
for(i=0; i<win; i++)
outn = (outn * 256) % Prime;
if(verbose)
fprint(2, "256^%d = %.6lux\n", win, outn);
outn = Prime - outn;
if(verbose)
fprint(2, "outn = %.6lux\n", outn);
compress();
Bwrite(&bout, odat, nodat);
Bterm(&bout);
fprint(2, "brk %p\n", sbrk(1));
fprint(2, "%d nodes used; %d of %d hash slots used\n", nalloc, nnew, nhash);
exits(nil);
}
示例14: main
void
main(int argc, char **argv)
{
int fd, xsize, ysize;
Memimage *im, *nim;
ulong ochan, tchan;
xsize = ysize = 0;
ARGBEGIN{
case 'a':
xsize = ysize = getsize(EARGF(usage()));
break;
case 'x':
xsize = getsize(EARGF(usage()));
break;
case 'y':
ysize = getsize(EARGF(usage()));
break;
default:
usage();
}ARGEND
fd = 0;
if(*argv){
fd = open(*argv, OREAD);
if(fd < 0)
sysfatal("open: %r");
}
memimageinit();
if((im = readmemimage(fd)) == nil)
sysfatal("readmemimage: %r");
if(xsize & PERCENT)
xsize = ((xsize & ~PERCENT) * Dx(im->r)) / 100;
if(ysize & PERCENT)
ysize = ((ysize & ~PERCENT) * Dy(im->r)) / 100;
if(xsize || ysize){
if(ysize == 0)
ysize = (xsize * Dy(im->r)) / Dx(im->r);
if(xsize == 0)
xsize = (ysize * Dx(im->r)) / Dy(im->r);
ochan = im->chan;
switch(ochan){
default:
for(tchan = ochan; tchan; tchan >>= 8)
if(TYPE(tchan) == CAlpha){
tchan = RGBA32;
break;
}
if(tchan == 0)
tchan = RGB24;
break;
case GREY8:
case RGB24:
case RGBA32:
case ARGB32:
case XRGB32:
tchan = ochan;
break;
case GREY1:
case GREY2:
case GREY4:
tchan = GREY8;
break;
}
if(tchan != ochan){
if((nim = allocmemimage(im->r, tchan)) == nil)
sysfatal("allocimage: %r");
memimagedraw(nim, nim->r, im, im->r.min, nil, ZP, S);
freememimage(im);
im = nim;
}
if((nim = allocmemimage(
Rect(im->r.min.x, im->r.min.y, im->r.min.x+xsize, im->r.min.y+ysize),
tchan)) == nil)
sysfatal("allocmemimage: %r");
resample(nim, nim->r, im, im->r);
freememimage(im);
im = nim;
if(tchan != ochan){
if((im = allocmemimage(nim->r, ochan)) == nil)
sysfatal("allocimage: %r");
memimagedraw(im, im->r, nim, nim->r.min, nil, ZP, S);
freememimage(nim);
}
}
if(writememimage(1, im) < 0)
sysfatal("writememimage: %r");
exits(0);
}
示例15: threadmain
void
threadmain(int argc, char *argv[])
{
int n;
uchar score[VtScoreSize];
uchar *buf;
char *host, *type;
vlong off;
VtEntry e;
VtRoot root;
VtCache *c;
VtConn *z;
VtFile *f;
quotefmtinstall();
fmtinstall('F', vtfcallfmt);
fmtinstall('V', vtscorefmt);
host = nil;
ARGBEGIN{
case 'V':
chattyventi++;
break;
case 'h':
host = EARGF(usage());
break;
case 'v':
chatty++;
break;
default:
usage();
break;
}ARGEND
if(argc != 1)
usage();
type = nil;
if(vtparsescore(argv[0], &type, score) < 0)
sysfatal("could not parse score '%s': %r", argv[0]);
if(type == nil || strcmp(type, "file") != 0)
sysfatal("bad score - not file:...");
buf = vtmallocz(VtMaxLumpSize);
z = vtdial(host);
if(z == nil)
sysfatal("could not connect to server: %r");
if(vtconnect(z) < 0)
sysfatal("vtconnect: %r");
// root block ...
n = vtread(z, score, VtRootType, buf, VtMaxLumpSize);
if(n < 0)
sysfatal("could not read root %V: %r", score);
if(n != VtRootSize)
sysfatal("root block %V is wrong size %d != %d", score, n, VtRootSize);
if(vtrootunpack(&root, buf) < 0)
sysfatal("unpacking root block %V: %r", score);
if(strcmp(root.type, "file") != 0)
sysfatal("bad root type %q (not 'file')", root.type);
if(chatty)
fprint(2, "%V: %q %q %V %d %V\n",
score, root.name, root.type,
root.score, root.blocksize, root.prev);
// ... points at entry block
n = vtread(z, root.score, VtDirType, buf, VtMaxLumpSize);
if(n < 0)
sysfatal("could not read entry %V: %r", root.score);
if(n != VtEntrySize)
sysfatal("dir block %V is wrong size %d != %d", root.score, n, VtEntrySize);
if(vtentryunpack(&e, buf, 0) < 0)
sysfatal("unpacking dir block %V: %r", root.score);
if((e.type&VtTypeBaseMask) != VtDataType)
sysfatal("not a single file");
// open and read file
c = vtcachealloc(z, root.blocksize*32);
if(c == nil)
sysfatal("vtcachealloc: %r");
f = vtfileopenroot(c, &e);
if(f == nil)
sysfatal("vtfileopenroot: %r");
off = 0;
vtfilelock(f, VtOREAD);
while((n = vtfileread(f, buf, VtMaxLumpSize, off)) > 0){
write(1, buf, n);
off += n;
}
threadexitsall(0);
}