diff --git a/lib/file.c b/lib/file.c index 99759f477..af966016b 100644 --- a/lib/file.c +++ b/lib/file.c @@ -118,10 +118,10 @@ UrgError file(struct UrlData *data, char *path, long *bytecountp) int fd; char *actual_path = curl_unescape(path); -#ifdef WIN32 +#if defined(WIN32) || defined(__EMX__) int i; - /* change path separators from '/' to '\\' for Windows */ + /* change path separators from '/' to '\\' for Windows and OS/2 */ for (i=0; actual_path[i] != '\0'; ++i) if (actual_path[i] == '/') actual_path[i] = '\\'; diff --git a/lib/getpass.c b/lib/getpass.c index c0c7bf97b..4a87145ab 100644 --- a/lib/getpass.c +++ b/lib/getpass.c @@ -76,7 +76,9 @@ char *getpass(const char *prompt) FILE *outfp; static char buf[INPUT_BUFFER]; RETSIGTYPE (*sigint)(); +#ifndef __EMX__ RETSIGTYPE (*sigtstp)(); +#endif size_t bytes_read; int infd; int outfd; @@ -92,7 +94,11 @@ char *getpass(const char *prompt) #endif sigint = signal(SIGINT, SIG_IGN); + /* 20000318 mgs + * this is needed by the emx system, SIGTSTP is not a supported signal */ +#ifndef __EMX__ sigtstp = signal(SIGTSTP, SIG_IGN); +#endif if( (infp=fopen("/dev/tty", "r")) == NULL ) { diff --git a/lib/progress.c b/lib/progress.c index 4307be35e..1bd5b470c 100644 --- a/lib/progress.c +++ b/lib/progress.c @@ -48,6 +48,13 @@ #include #endif +/* 20000318 mgs + * later we use _scrsize to determine the screen width, this emx library + * function needs stdlib.h to be included */ +#if defined(__EMX__) +#include +#endif + #include #include "urldata.h" @@ -365,6 +372,11 @@ static int width = 0; void ProgressInit(struct UrlData *data, int max/*, int options, int moremax*/) { +#ifdef __EMX__ + /* 20000318 mgs */ + int scr_size [2]; +#endif + if(data->conf&(CONF_NOPROGRESS|CONF_MUTE)) return; @@ -372,10 +384,25 @@ void ProgressInit(struct UrlData *data, int max/*, int options, int moremax*/) /* TODO: get terminal width through ansi escapes or something similar. try to update width when xterm is resized... - 19990617 larsa */ +#ifndef __EMX__ + /* 20000318 mgs + * OS/2 users most likely won't have this env var set, and besides that + * we're using our own way to determine screen width */ if (curl_GetEnv("COLUMNS") != NULL) width = atoi(curl_GetEnv("COLUMNS")); else width = 79; +#else + /* 20000318 mgs + * We use this emx library call to get the screen width, and subtract + * one from what we got in order to avoid a problem with the cursor + * advancing to the next line if we print a string that is as long as + * the screen is wide. */ + + _scrsize(scr_size); + width = scr_size[0] - 1; +#endif + progressmax = max; if(-1 == max)