add sci-astronomy/xephem

This ebuild includes the openssl patches needed to restore sun (osoho)
and earth menu functions.
This commit is contained in:
Florian Tham
2020-01-23 11:47:48 +01:00
parent aba63f9ec0
commit facf5c6fbe
8 changed files with 995 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
diff -Naur a/GUI/xephem/earthmenu.c b/GUI/xephem/earthmenu.c
--- a/GUI/xephem/earthmenu.c 2012-11-23 05:15:39.000000000 +0100
+++ b/GUI/xephem/earthmenu.c 2018-09-24 01:17:34.248048815 +0200
@@ -4886,8 +4886,11 @@
int nrawgif;
char buf[1024];
int w, h;
+ XE_SSL_FD ssl_fd;
int fd;
+ memset(&ssl_fd, 0, sizeof(ssl_fd));
+
/* open test case, else real network */
fd = openh ("/tmp/latest_cmoll.gif", O_RDONLY);
if (fd >= 0) {
@@ -4902,12 +4905,12 @@
stopd_up();
/* make connection to server for the file */
- xe_msg (0, "Getting\nhttp://%s%s", wxhost, wxfile);
- (void) sprintf (buf, "GET http://%s%s HTTP/1.0\r\nUser-Agent: xephem/%s\r\n\r\n",
- wxhost, wxfile, PATCHLEVEL);
- fd = httpGET (wxhost, buf, buf);
+ xe_msg (0, "Getting\nhttps://%s%s", wxhost, wxfile);
+ (void) sprintf (buf, "GET %s HTTP/1.1\r\nHost: %s\r\nConnection: close\r\nUser-Agent: xephem/%s\r\n\r\n",
+ wxfile, wxhost, PATCHLEVEL);
+ fd = httpsGET (wxhost, buf, buf, &ssl_fd);
if (fd < 0) {
- xe_msg (1, "http get:\n%s", buf);
+ xe_msg (1, "https get:\n%s", buf);
stopd_down();
return (-1);
}
@@ -4915,7 +4918,7 @@
/* read header, looking for some header info */
isgif = 0;
length = 0;
- while (recvline (fd, buf, sizeof(buf)) > 1) {
+ while (ssl_recvline (&ssl_fd, buf, sizeof(buf)) > 1) {
xe_msg (0, "Rcv: %s", buf);
if (strstr (buf, "image/gif"))
isgif = 1;
@@ -4923,9 +4926,10 @@
length = atoi (buf+15);
}
if (!isgif) {
- while (recvline (fd, buf, sizeof(buf)) > 1)
+ while (ssl_recvline (&ssl_fd, buf, sizeof(buf)) > 1)
xe_msg (0, "Rcv: %s", buf);
- close (fd);
+ SSL_free (ssl_fd.ssl);
+ close (ssl_fd.fd);
stopd_down();
return (-1);
}
@@ -4936,12 +4940,13 @@
pm_up();
for (nrawgif = 0; nrawgif < sizeof(rawgif); nrawgif += nr) {
pm_set (100*nrawgif/length);
- nr = readbytes (fd, rawgif+nrawgif, 4096);
+ nr = SSL_read (ssl_fd.ssl, rawgif+nrawgif, 4096);
if (nr < 0) {
- xe_msg (1, "%s:\n%s", wxhost, syserrstr());
+ xe_msg (1, "%s: ssl read error code: %d", wxhost, SSL_get_error(ssl_fd.ssl, nr));
stopd_down();
pm_down();
- close (fd);
+ SSL_free (ssl_fd.ssl);
+ close (ssl_fd.fd);
return (-1);
}
if (nr == 0)
@@ -4949,7 +4954,8 @@
}
stopd_down();
pm_down();
- close (fd);
+ SSL_free (ssl_fd.ssl);
+ close (ssl_fd.fd);
if (nr > 0) {
xe_msg (1, "File too large");
return (-1);