/* ------------------------------------------------------------ */
/*
HTTrack Website Copier, Offline Browser for Windows and Unix
Copyright (C) Xavier Roche and other contributors
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 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, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Important notes:
- We hereby ask people using this source NOT to use it in purpose of grabbing
emails addresses, or collecting any other private information on persons.
This would disgrace our work, and spoil the many hours we spent on it.
Please visit our Website: http://www.httrack.com
*/
/* ------------------------------------------------------------ */
/* File: Mini-server */
/* Author: Xavier Roche */
/* ------------------------------------------------------------ */
// Fichier intercepteur d'URL .h
#ifndef HTS_SERVER_DEFH
#define HTS_SERVER_DEFH
#include "htsbasenet.h"
// Fonctions
void socinput(T_SOC soc,char* s,int max);
T_SOC smallserver_init_std(int* port_prox,char* adr_prox);
T_SOC smallserver_init(int* port,char* adr);
int smallserver(T_SOC soc,char* url,char* method,char* data, char* path);
#define CATCH_RESPONSE \
"HTTP/1.0 200 OK\r\n"\
"Content-type: text/html\r\n"\
"\r\n"\
"\r\n"\
"
\r\n"\
"Link caught!\r\n"\
"\r\n"\
"\r\n"\
"\r\n"\
"Link captured into HTTrack Website Copier, you can now restore your proxy preferences!
\r\n"\
"
\r\n"\
"\r\n"\
""\
"\r\n"\
"\r\n"\
/* String */
typedef struct {
char* buff;
int len;
int capa;
} String;
#define STRING_EMPTY {NULL, 0, 0}
#define BLK_SIZE 8192
#define StringBuff(blk) ((blk)->buff)
#define StringLength(blk) ((blk)->len)
#define StringCapacity(blk) ((blk)->capa)
#define StringClear(blk) do { \
if ((blk)->capa > 0) { \
(blk)->buff[0] = '\0'; \
}\
(blk)->len = 0; \
} while(0)
#define StringFree(blk) do { if ((blk)->buff != NULL) { freet((blk)->buff); (blk)->buff = NULL; } } while(0)
#define StringMemcat(blk, str, size) do { \
if ((blk)->len + (int)(size) + 1 > (blk)->capa) { \
(blk)->capa = (blk)->len + (size) + BLK_SIZE; \
(blk)->buff = (char*) realloct((blk)->buff, (blk)->capa); \
assertf((blk)->buff != NULL); \
} \
if ((int)(size) > 0) { \
memcpy((blk)->buff + (blk)->len, (str), (size)); \
(blk)->len += (size); \
} \
*((blk)->buff + (blk)->len) = '\0'; \
} while(0)
#define StringAddchar(blk, c) do { \
char __c = (c); \
StringMemcat(blk, &__c, 1); \
} while(0)
static void* StringAcquire(String* blk) {
void* buff = blk->buff;
blk->buff = NULL;
blk->capa = 0;
blk->len = 0;
return buff;
}
static void StringStrcat(String* blk, char* str) {
StringMemcat(blk, str, strlen(str));
}
/* Language files */
int htslang_load(char* limit_to, char* apppath);
void conv_printf(char* from,char* to);
void LANG_DELETE(void);
void LANG_INIT(char* path);
int LANG_T(char* path, int l);
int QLANG_T(int l);
char* LANGSEL(char* name);
char* LANGINTKEY(char* name);
int LANG_SEARCH(char* path, char* iso);
int LANG_LIST(char* path, char* buffer);
int htslang_init(void);
int htslang_uninit(void);
int linput_cpp(FILE* fp,char* s,int max);
void unescapehttp(char* s, String* tempo);
void unescapeini(char* s, String* tempo);
int smallserver_setkey(char* key, char* value);
int smallserver_setkeyint(char* key, LLint value);
int smallserver_setkeyarr(char* key, int id, char* key2, char* value);
#endif