#include #if defined _WIN32 && !defined __CYGWIN__ #define WIN32_LEAN_AND_MEAN #include #include #endif int main (int argc, char *argv[]) { long pos1 = ftell (stdin); printf ("ftell() -> %ld\n", pos1); #if !(defined _WIN32 && !defined __CYGWIN__) || defined __MINGW32__ off_t pos2 = ftello (stdin); printf ("ftello() -> %lld\n", (long long) pos2); fpos_t pos3; if (fgetpos (stdin, &pos3) >= 0) printf ("fgetpos -> success\n"); else printf ("fgetpos -> fail\n"); #endif #if defined _WIN32 && !defined __CYGWIN__ int fd = 0; long long pos4 = _lseeki64 (fd, 0, SEEK_CUR); printf ("_lseeki64 -> %lld\n", pos4); HANDLE h = (HANDLE) _get_osfhandle (fd); LARGE_INTEGER zero; zero.QuadPart = 0; LARGE_INTEGER pos5; if (SetFilePointerEx (h, zero, &pos5, FILE_CURRENT)) printf ("SetFilePointerEx -> %lld\n", pos5.QuadPart); else printf ("SetFilePointerEx -> fail\n"); DWORD t = GetFileType (h); switch (t) { case FILE_TYPE_DISK: printf ("GetFileType -> FILE_TYPE_DISK\n"); break; case FILE_TYPE_CHAR: printf ("GetFileType -> FILE_TYPE_CHAR\n"); break; case FILE_TYPE_PIPE: printf ("GetFileType -> FILE_TYPE_PIPE\n"); break; default: printf ("GetFileType -> 0x%x\n", t); } #endif return 0; }