blob: 1673db8ed7ff5bace0511adbf0f02f02916b4a03 [file] [log] [blame]
/*
* R : A Computer Language for Statistical Data Analysis
* Copyright (C) 2000-2018 The R Core Team.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, a copy is available at
* https://www.R-project.org/Licenses/
*/
/* Internal header, not installed */
#ifndef R_CONNECTIONS_H_
#define R_CONNECTIONS_H_
/* the visible part of the connections */
#include <R_ext/Connections.h>
/* NB: this is a private header, and not installed. The internals of
connections are private and subject to change without notice.
A subset can be accessed using R_ext/Connections.h but read
the warning in that file for details. */
typedef enum {HTTPsh, FTPsh, HTTPSsh, FTPSsh} UrlScheme;
/* used in internet module */
typedef struct urlconn {
void *ctxt;
UrlScheme type;
char *headers;
} *Rurlconn;
/* used in internet module */
typedef struct sockconn {
int port;
int server;
int fd;
int timeout;
char *host;
char inbuf[4096], *pstart, *pend;
} *Rsockconn;
/* used in X11 module */
typedef struct clpconn {
char *buff;
int pos, len, last, sizeKB;
Rboolean warned;
} *Rclpconn;
#define init_con Rf_init_con
#define con_pushback Rf_con_pushback
int Rconn_fgetc(Rconnection con);
int Rconn_ungetc(int c, Rconnection con);
size_t Rconn_getline(Rconnection con, char *buf, size_t bufsize);
int Rconn_printf(Rconnection con, const char *format, ...);
Rconnection getConnection(int n);
Rconnection getConnection_no_err(int n);
Rboolean switch_stdout(int icon, int closeOnExit);
void init_con(Rconnection new, const char *description, int enc,
const char * const mode);
Rconnection R_newurl(const char *description, const char * const mode,
SEXP headers, int type);
Rconnection R_newsock(const char *host, int port, int server, const char * const mode, int timeout);
Rconnection in_R_newsock(const char *host, int port, int server, const char *const mode, int timeout);
Rconnection R_newunz(const char *description, const char * const mode);
int dummy_fgetc(Rconnection con);
int dummy_vfprintf(Rconnection con, const char *format, va_list ap);
int getActiveSink(int n);
void con_pushback(Rconnection con, Rboolean newLine, char *line);
int Rsockselect(int nsock, int *insockfd, int *ready, int *write, double timeout);
#define set_iconv Rf_set_iconv
void set_iconv(Rconnection con);
#endif