int main() { pid_t pid; pid = getppid(); PUL(pid); return 0; }
int main() { FILE *fp; size_t size; char buf[128]; fp = fopen("in", "r+"); assert(fp); size = fwrite("aabbccdd", 2, 4, fp); PUL(size); rewind(fp); size = fread(buf, 2, 4, fp); PUL(size); print_str(buf, size * 2); fclose(fp); return 0; }
int main() { int res; char buf[128]; ssize_t size; memset(buf, 0, 128); size = readlink("soft_link_to_in", buf, 128); PUL(size); PS(buf); return 0; }
int main() { FILE *fp; int res; size_t size; char buf[128]; fp = fopen("in", "r+"); assert(fp); res = fseek(fp, 1, SEEK_SET); PD(res); size = fread(buf, 1, 1, fp); PUL(size); PC(buf[0]); fclose(fp); return 0; }
BOOL vmsPostRequest::Send(LPCTSTR ptszServer, LPCTSTR ptszFilePath, LPCVOID pvData, DWORD dwDataSize, LPCTSTR ptszContentType, std::string *pstrResponse) { Close (); DWORD dwAccessType = INTERNET_OPEN_TYPE_PRECONFIG; if (m_pProxyInfo) dwAccessType = m_pProxyInfo->tstrAddr.empty () ? INTERNET_OPEN_TYPE_DIRECT : INTERNET_OPEN_TYPE_PROXY; m_hInet = InternetOpen (m_tstrUserAgent.c_str (), dwAccessType, dwAccessType == INTERNET_OPEN_TYPE_PROXY ? m_pProxyInfo->tstrAddr.c_str () : NULL, NULL, 0); if (m_hInet == NULL) return FALSE; PostInitWinInetHandle (m_hInet); m_hConnect = InternetConnect (m_hInet, ptszServer, INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, NULL); if (m_hConnect == NULL) return FALSE; #ifdef DEBUG_SHOW_SERVER_REQUESTS TCHAR tszTmpPath [MAX_PATH]; GetTempPath (MAX_PATH, tszTmpPath); TCHAR tszTmpFile [MAX_PATH]; _stprintf (tszTmpFile, _T ("%s\\si_serv_req_%d.txt"), tszTmpPath, _c++); HANDLE hLog = CreateFile (tszTmpFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); DWORD dwLogWritten; #define LOG_REQ(s) WriteFile (hLog, s, strlen (s), &dwLogWritten, NULL) #define LOG_REQ_OPEN CloseHandle (hLog); ShellExecute (NULL, "open", tszTmpFile, NULL, NULL, SW_SHOW); char szTmp [10000] = ""; DWORD dwTmp = 10000; #define LOG_REQ_HTTP_HDRS *szTmp = 0; HttpQueryInfo (m_hRequest, HTTP_QUERY_RAW_HEADERS_CRLF | HTTP_QUERY_FLAG_REQUEST_HEADERS, szTmp, &dwTmp, 0); LOG_REQ (szTmp); #define LOG_REQ_ALL LOG_REQ_HTTP_HDRS; LOG_REQ ((LPCSTR)pvData); #define LOG_RESP_HTTP_HDRS *szTmp = 0; HttpQueryInfo (m_hRequest, HTTP_QUERY_RAW_HEADERS_CRLF, szTmp, &dwTmp, 0); LOG_REQ (szTmp); DWORD dwErr; #else #define LOG_REQ(s) #define LOG_REQ_OPEN #define LOG_REQ_HTTP_HDRS #define LOG_RESP_HTTP_HDRS #define LOG_REQ_ALL #endif m_hRequest = HttpOpenRequest (m_hConnect, _T ("POST"), ptszFilePath, NULL, NULL, NULL, INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_NO_UI | INTERNET_FLAG_PRAGMA_NOCACHE, 0); if (m_hRequest == NULL) { DWORD dwErr = GetLastError (); LOG_REQ ("SERVER FAILURE\r\n"); LOG_REQ_OPEN; SetLastError (dwErr); return FALSE; } ApplyProxyAuth (m_hRequest); if (ptszContentType) { tstring tstr = _T ("Content-Type: "); tstr += ptszContentType; tstr += _T ("\r\n"); HttpAddRequestHeaders (m_hRequest, tstr.c_str (), tstr.length (), HTTP_ADDREQ_FLAG_ADD|HTTP_ADDREQ_FLAG_REPLACE); } #ifdef vmsPostRequest_USE_NO_HTTPSENDREQUESTEX if (FALSE == HttpSendRequest (m_hRequest, NULL, 0, (LPVOID)pvData, dwDataSize)) return FALSE; #else INTERNET_BUFFERS buffs; ZeroMemory (&buffs, sizeof (buffs)); buffs.dwStructSize = sizeof (buffs); buffs.dwBufferTotal = dwDataSize; if (FALSE == HttpSendRequestEx (m_hRequest, &buffs, NULL, 0, 0)) { PUL (" >>> HttpSendRequestEx failed."); LOG_REQ ("SERVER FAILURE\r\n"); LOG_REQ_OPEN; return FALSE; } if (FALSE == MyInternetWriteFile (m_hRequest, pvData, dwDataSize)) { PUL (" >>> MyInternetWriteFile failed."); LOG_REQ ("SERVER FAILURE\r\n"); LOG_REQ_OPEN; return FALSE; } if (FALSE == HttpEndRequest (m_hRequest, NULL, 0, 0)) { PUL (" >>> HttpEndRequest failed."); LOG_REQ_ALL; LOG_REQ ("\r\n\r\n"); LOG_RESP_HTTP_HDRS; LOG_REQ ("SERVER FAILURE\r\n"); LOG_REQ_OPEN; return FALSE; } #endif LOG_REQ_ALL; LOG_REQ ("\r\n\r\n"); LOG_RESP_HTTP_HDRS; if (pstrResponse) { *pstrResponse = ""; char sz [1025]; DWORD dw; while (InternetReadFile (m_hRequest, sz, sizeof (sz) - 1, &dw) && dw != 0) { sz [dw] = 0; (*pstrResponse) += sz; } } LOG_REQ_OPEN; return TRUE; }