Marco G. Salvagno's OS/2 fixes

This commit is contained in:
Daniel Stenberg 2000-03-19 19:54:13 +00:00
Родитель 35140201b5
Коммит ff3fd842d8
3 изменённых файлов: 35 добавлений и 2 удалений

Просмотреть файл

@ -118,10 +118,10 @@ UrgError file(struct UrlData *data, char *path, long *bytecountp)
int fd; int fd;
char *actual_path = curl_unescape(path); char *actual_path = curl_unescape(path);
#ifdef WIN32 #if defined(WIN32) || defined(__EMX__)
int i; 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) for (i=0; actual_path[i] != '\0'; ++i)
if (actual_path[i] == '/') if (actual_path[i] == '/')
actual_path[i] = '\\'; actual_path[i] = '\\';

Просмотреть файл

@ -76,7 +76,9 @@ char *getpass(const char *prompt)
FILE *outfp; FILE *outfp;
static char buf[INPUT_BUFFER]; static char buf[INPUT_BUFFER];
RETSIGTYPE (*sigint)(); RETSIGTYPE (*sigint)();
#ifndef __EMX__
RETSIGTYPE (*sigtstp)(); RETSIGTYPE (*sigtstp)();
#endif
size_t bytes_read; size_t bytes_read;
int infd; int infd;
int outfd; int outfd;
@ -92,7 +94,11 @@ char *getpass(const char *prompt)
#endif #endif
sigint = signal(SIGINT, SIG_IGN); 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); sigtstp = signal(SIGTSTP, SIG_IGN);
#endif
if( (infp=fopen("/dev/tty", "r")) == NULL ) if( (infp=fopen("/dev/tty", "r")) == NULL )
{ {

Просмотреть файл

@ -48,6 +48,13 @@
#include <time.h> #include <time.h>
#endif #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 <stdlib.h>
#endif
#include <curl/curl.h> #include <curl/curl.h>
#include "urldata.h" #include "urldata.h"
@ -365,6 +372,11 @@ static int width = 0;
void ProgressInit(struct UrlData *data, int max/*, int options, int moremax*/) 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)) if(data->conf&(CONF_NOPROGRESS|CONF_MUTE))
return; 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. /* TODO: get terminal width through ansi escapes or something similar.
try to update width when xterm is resized... - 19990617 larsa */ 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) if (curl_GetEnv("COLUMNS") != NULL)
width = atoi(curl_GetEnv("COLUMNS")); width = atoi(curl_GetEnv("COLUMNS"));
else else
width = 79; 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; progressmax = max;
if(-1 == max) if(-1 == max)