#include "curl_memory.h"
#include "memdebug.h"
+#if defined(WIN32) || defined(_WIN32_WCE)
+#define PRESERVE_WINDOWS_ERROR_CODE
+#endif
+
const char *
curl_easy_strerror(CURLcode error)
{
static const char *
get_winsock_error (int err, char *buf, size_t len)
{
+#ifdef PRESERVE_WINDOWS_ERROR_CODE
+ DWORD old_win_err = GetLastError();
+#endif
+ int old_errno = errno;
const char *p;
#ifndef CURL_DISABLE_VERBOSE_STRINGS
#endif
strncpy(buf, p, len);
buf [len-1] = '\0';
+
+ if(errno != old_errno)
+ errno = old_errno;
+
+#ifdef PRESERVE_WINDOWS_ERROR_CODE
+ if(old_win_err != GetLastError())
+ SetLastError(old_win_err);
+#endif
+
return buf;
}
#endif /* USE_WINSOCK */
*/
const char *Curl_strerror(struct connectdata *conn, int err)
{
+#ifdef PRESERVE_WINDOWS_ERROR_CODE
+ DWORD old_win_err = GetLastError();
+#endif
+ int old_errno = errno;
char *buf, *p;
size_t max;
- int old_errno;
-#ifdef WIN32
- DWORD old_win_err;
-#endif
+
DEBUGASSERT(conn);
DEBUGASSERT(err >= 0);
- old_errno = errno;
-#ifdef WIN32
- old_win_err = GetLastError();
-#endif
buf = conn->syserr_buf;
max = sizeof(conn->syserr_buf)-1;
*buf = '\0';
p = strrchr(buf, '\r');
if(p && (p - buf) >= 1)
*p = '\0';
-#ifdef WIN32
+
+ if(errno != old_errno)
+ errno = old_errno;
+
+#ifdef PRESERVE_WINDOWS_ERROR_CODE
if(old_win_err != GetLastError())
SetLastError(old_win_err);
#endif
- if(errno != old_errno)
- errno = old_errno;
return buf;
}
#ifdef USE_WINDOWS_SSPI
const char *Curl_sspi_strerror (struct connectdata *conn, int err)
{
+#ifdef PRESERVE_WINDOWS_ERROR_CODE
+ DWORD old_win_err = GetLastError();
+#endif
+ int old_errno = errno;
+ const char *txt;
+ char *outbuf;
+ size_t outmax;
#ifndef CURL_DISABLE_VERBOSE_STRINGS
char txtbuf[80];
char msgbuf[sizeof(conn->syserr_buf)];
char *p, *str, *msg = NULL;
bool msg_formatted = FALSE;
- int old_errno;
- DWORD old_win_err;
#endif
- const char *txt;
- char *outbuf;
- size_t outmax;
DEBUGASSERT(conn);
#ifndef CURL_DISABLE_VERBOSE_STRINGS
- old_errno = errno;
- old_win_err = GetLastError();
-
switch(err) {
case SEC_E_OK:
txt = "No error";
strncpy(outbuf, str, outmax);
}
- if(old_win_err != GetLastError())
- SetLastError(old_win_err);
-
- if(errno != old_errno)
- errno = old_errno;
-
#else
if(err == SEC_E_OK)
outbuf[outmax] = '\0';
+ if(errno != old_errno)
+ errno = old_errno;
+
+#ifdef PRESERVE_WINDOWS_ERROR_CODE
+ if(old_win_err != GetLastError())
+ SetLastError(old_win_err);
+#endif
+
return outbuf;
}
#endif /* USE_WINDOWS_SSPI */
int hd;
struct_stat file_info;
struct curl_slist *hl;
- int error;
struct curl_slist *headerlist=NULL;
const char *buf_1 = "RNFR 505";
hd_src = fopen(libtest_arg2, "rb");
if(NULL == hd_src) {
- error = errno;
fprintf(stderr, "fopen failed with error: %d %s\n",
- error, strerror(error));
+ errno, strerror(errno));
fprintf(stderr, "Error opening file: %s\n", libtest_arg2);
return TEST_ERR_MAJOR_BAD; /* if this happens things are major weird */
}
hd = fstat(fileno(hd_src), &file_info);
if(hd == -1) {
/* can't open file, bail out */
- error = errno;
fprintf(stderr, "fstat() failed with error: %d %s\n",
- error, strerror(error));
+ errno, strerror(errno));
fprintf(stderr, "ERROR: cannot open file %s\n", libtest_arg2);
fclose(hd_src);
return TEST_ERR_MAJOR_BAD;
CURL *curl = NULL;
FILE *hd_src = NULL;
int hd;
- int error;
struct_stat file_info;
CURLM *m = NULL;
int running;
hd_src = fopen(libtest_arg2, "rb");
if(NULL == hd_src) {
- error = errno;
fprintf(stderr, "fopen failed with error: %d (%s)\n",
- error, strerror(error));
+ errno, strerror(errno));
fprintf(stderr, "Error opening file: (%s)\n", libtest_arg2);
return TEST_ERR_FOPEN;
}
hd = fstat(fileno(hd_src), &file_info);
if(hd == -1) {
/* can't open file, bail out */
- error = errno;
fprintf(stderr, "fstat() failed with error: %d (%s)\n",
- error, strerror(error));
+ errno, strerror(errno));
fprintf(stderr, "ERROR: cannot open file (%s)\n", libtest_arg2);
fclose(hd_src);
return TEST_ERR_FSTAT;
FILE *hd_src;
int hd;
struct_stat file_info;
- int error;
if(!libtest_arg2) {
fprintf(stderr, "Usage: <url> <file-to-upload>\n");
hd_src = fopen(libtest_arg2, "rb");
if(NULL == hd_src) {
- error = errno;
fprintf(stderr, "fopen failed with error: %d %s\n",
- error, strerror(error));
+ errno, strerror(errno));
fprintf(stderr, "Error opening file: %s\n", libtest_arg2);
return -2; /* if this happens things are major weird */
}
hd = fstat(fileno(hd_src), &file_info);
if(hd == -1) {
/* can't open file, bail out */
- error = errno;
fprintf(stderr, "fstat() failed with error: %d %s\n",
- error, strerror(error));
+ errno, strerror(errno));
fprintf(stderr, "ERROR: cannot open file %s\n", libtest_arg2);
fclose(hd_src);
return TEST_ERR_MAJOR_BAD;
CURL *curl = NULL;
FILE *hd_src = NULL;
int hd;
- int error;
struct_stat file_info;
CURLM *m = NULL;
struct ReadWriteSockets sockets = {{NULL, 0, 0}, {NULL, 0, 0}};
hd_src = fopen(libtest_arg2, "rb");
if(NULL == hd_src) {
- error = errno;
fprintf(stderr, "fopen() failed with error: %d (%s)\n",
- error, strerror(error));
+ errno, strerror(errno));
fprintf(stderr, "Error opening file: (%s)\n", libtest_arg2);
return TEST_ERR_FOPEN;
}
hd = fstat(fileno(hd_src), &file_info);
if(hd == -1) {
/* can't open file, bail out */
- error = errno;
fprintf(stderr, "fstat() failed with error: %d (%s)\n",
- error, strerror(error));
+ errno, strerror(errno));
fprintf(stderr, "ERROR: cannot open file (%s)\n", libtest_arg2);
fclose(hd_src);
return TEST_ERR_FSTAT;
int msgs_left;
CURLMsg *msg;
FILE *upload = NULL;
- int error;
start_test_timing();
upload = fopen(libtest_arg3, "rb");
if(!upload) {
- error = errno;
fprintf(stderr, "fopen() failed with error: %d (%s)\n",
- error, strerror(error));
+ errno, strerror(errno));
fprintf(stderr, "Error opening file: (%s)\n", libtest_arg3);
return TEST_ERR_FOPEN;
}