История изменений
Исправление
Moisha_Liberman,
(текущая версия)
:
Если есть системный вызов и tcc может дёрнуть соответствующую функцию из стандартной библиотеки, то именно это он и сделает. Самый простой пример на основе кода чуть выше (скрипт находится в файле test):
#!/usr/bin/tcc -run
#include <stdio.h>
#include <unistd.h>
#include <math.h>
#include <memory.h>
#include <stdlib.h>
#include <limits.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
int main(int argc, char **argv) {
char hostname[1024];
struct addrinfo hints, *info, *p;
int gai_result;
printf("Hello world 1!\n");
printf("Arg: %s\n", argc>1?argv[1]:"-=-");
printf("Calculating sample: %f\n", sqrt(4)); /* This */
/* This shouldn't work without of https at localhost, Toxo2. */
hostname[1023] = '\0';
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_CANONNAME;
if((gai_result = getaddrinfo(hostname, "https", &hints, &info))!= 0) {
fprintf(stderr, "Result: %s\n", gai_strerror(gai_result));
exit(EXIT_FAILURE);
}
for(p = info; p != NULL; p = p->ai_next) {
fprintf(stderr, "hostname is: %s\n", p->ai_canonname);
}
freeaddrinfo(info);
execve("./test", NULL, NULL); /* And this */
return(0);
}
Для скриптоты на С вполне годно. Если на машине нет сервера с поддержкой https, то работать не будет. На машине с таким сервером всё работает.
Да, сам хотел с места крикнуть tcc
, но тут уже опередили, как я погляжу. =)
Исходная версия
Moisha_Liberman,
:
Да нет там ограничений.
Если есть системный вызов и tcc может дёрнуть соответствующую функцию из стандартной библиотеки, то именно это он и сделает. Самый простой пример на основе кода чуть выше (скрипт находится в файле test):
#!/usr/bin/tcc -run
#include <stdio.h>
#include <unistd.h>
#include <math.h>
#include <memory.h>
#include <stdlib.h>
#include <limits.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
int main(int argc, char **argv) {
char hostname[1024];
struct addrinfo hints, *info, *p;
int gai_result;
printf("Hello world 1!\n");
printf("Arg: %s\n", argc>1?argv[1]:"-=-");
printf("Calculating sample: %f\n", sqrt(4)); /* This */
/* This shouldn't work without of https at localhost, Toxo2. */
hostname[1023] = '\0';
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_CANONNAME;
if((gai_result = getaddrinfo(hostname, "http", &hints, &info))!= 0) {
fprintf(stderr, "Result: %s\n", gai_strerror(gai_result));
exit(EXIT_FAILURE);
}
for(p = info; p != NULL; p = p->ai_next) {
fprintf(stderr, "hostname is: %s\n", p->ai_canonname);
}
freeaddrinfo(info);
execve("./test", NULL, NULL); /* And this */
return(0);
}
Для скриптоты на С вполне годно. Если на машине нет сервера с поддержкой https, то работать не будет. На машине с таким сервером всё работает.
Да, сам хотел с места крикнуть tcc
, но тут уже опередили, как я погляжу. =)