You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
3.0 KiB
117 lines
3.0 KiB
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <windows.h>
|
|
#include <wininet.h>
|
|
|
|
#ifndef _CRTAPI1
|
|
#define _CRTAPI1
|
|
#endif
|
|
|
|
#define IS_ARG(c) (((c) == '-') || ((c) == '/'))
|
|
|
|
void _CRTAPI1 main(int, char**);
|
|
void usage(void);
|
|
|
|
void _CRTAPI1 main(int argc, char** argv) {
|
|
|
|
HINTERNET h1;
|
|
HINTERNET h2;
|
|
HINTERNET h3;
|
|
HINTERNET h4;
|
|
LPSTR search;
|
|
|
|
search = NULL;
|
|
|
|
for (--argc, ++argv; argc; --argc, ++argv) {
|
|
if (IS_ARG(**argv)) {
|
|
switch (*++*argv) {
|
|
case 'v':
|
|
printf("Ha! There is no verbose mode, sucker. Try again\n");
|
|
break;
|
|
|
|
default:
|
|
printf("error: unrecognized command line flag '%c'\n", **argv);
|
|
usage();
|
|
}
|
|
} else if (!search) {
|
|
search = *argv;
|
|
} else {
|
|
printf("error: unrecognized command line argument \"%s\"\n", *argv);
|
|
usage();
|
|
}
|
|
}
|
|
|
|
h1 = InternetOpen("multfind", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
|
|
if (!h1) {
|
|
printf("error: InternetOpen() returns %d\n", GetLastError());
|
|
exit(1);
|
|
}
|
|
|
|
h2 = InternetConnect(h1,
|
|
"rfirthmips",
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
INTERNET_SERVICE_FTP,
|
|
0,
|
|
0
|
|
);
|
|
if (!h2) {
|
|
printf("error: InternetConnect() returns %d\n", GetLastError());
|
|
exit(1);
|
|
}
|
|
|
|
h3 = FtpFindFirstFile(h2, search, NULL, INTERNET_FLAG_RELOAD, 0);
|
|
if (!h3) {
|
|
printf("error: FtpFindFirstFile() #1 returns %d\n", GetLastError());
|
|
exit(1);
|
|
}
|
|
|
|
//
|
|
// try simultaneous search for same thing - should fail
|
|
//
|
|
|
|
h4 = FtpFindFirstFile(h2, search, NULL, INTERNET_FLAG_RELOAD, 0);
|
|
if (h4) {
|
|
printf("error: FtpFindFirstFile() #2 returns OK\n");
|
|
exit(1);
|
|
} else {
|
|
printf("FtpFindFirstFile() #2 returns %d\n", GetLastError());
|
|
}
|
|
|
|
//
|
|
// close first handle and try again - should succeed
|
|
//
|
|
|
|
if (!InternetCloseHandle(h3)) {
|
|
printf("error: InternetCloseHandle() returns %d\n", GetLastError());
|
|
}
|
|
|
|
h3 = FtpFindFirstFile(h2, search, NULL, INTERNET_FLAG_RELOAD, 0);
|
|
if (!h3) {
|
|
printf("error: FtpFindFirstFile() returns %d\n", GetLastError());
|
|
exit(1);
|
|
}
|
|
|
|
//
|
|
// try a second time again - should fail again
|
|
//
|
|
|
|
h4 = FtpFindFirstFile(h2, search, NULL, INTERNET_FLAG_RELOAD, 0);
|
|
if (h4) {
|
|
printf("error: FtpFindFirstFile() #2 returns OK\n");
|
|
exit(1);
|
|
} else {
|
|
printf("FtpFindFirstFile() #2 returns %d\n", GetLastError());
|
|
}
|
|
|
|
printf("Done.\n");
|
|
exit(0);
|
|
}
|
|
|
|
void usage() {
|
|
printf("usage: multfind [-v] [search argument]\n"
|
|
"where: -v = Verbose mode\n"
|
|
);
|
|
exit(1);
|
|
}
|