565 lines
14 KiB
Diff
565 lines
14 KiB
Diff
diff '--color=auto' -uNr work.orig/ascii.c work/ascii.c
|
|
--- work.orig/ascii.c 2026-04-10 01:49:57.727751381 +0200
|
|
+++ work/ascii.c 2026-04-10 01:52:46.077657933 +0200
|
|
@@ -62,6 +62,7 @@
|
|
#include <stdint.h>
|
|
#include <time.h>
|
|
#include <unistd.h>
|
|
+#include <string.h>
|
|
|
|
typedef int DWORD;
|
|
#define closesocket close
|
|
@@ -785,10 +786,8 @@
|
|
#endif
|
|
|
|
#ifdef LINUX
|
|
- int fd,pos,lend;
|
|
- off64_t off = 0;
|
|
- struct dirent64 *di;
|
|
- char mem[2048];
|
|
+ DIR *dir;
|
|
+ struct dirent *di;
|
|
#endif
|
|
|
|
while (*command == ' ') command++;
|
|
@@ -820,33 +819,29 @@
|
|
#endif
|
|
|
|
#ifdef LINUX
|
|
- fd = open ("../html",0);
|
|
- do {
|
|
- lend = getdirentries64 (fd,mem,2048,&off);
|
|
- pos = 0;
|
|
- while (pos < lend) {
|
|
- di = (struct dirent64 *)&mem[pos];
|
|
-
|
|
- sprintf (fname,"../html/%s",di->d_name);
|
|
- fp = fopen (fname,"r");
|
|
- if (fp && !fstat (fileno(fp),&fst) && S_ISREG (fst.st_mode)) {
|
|
- strncpy (result+len,di->d_name,22);
|
|
- strcat (result,";");
|
|
-
|
|
- atime = localtime (&fst.st_mtime);
|
|
- sprintf (st,"%d;%02d.%02d.%04d %02d:%02d;",fst.st_size,atime->tm_mday,atime->tm_mon+1,atime->tm_year + 1900,atime->tm_hour,atime->tm_min);
|
|
- strcat (result,st);
|
|
-
|
|
- len = strlen (result);
|
|
- cnt++;
|
|
- fclose (fp);
|
|
- }
|
|
-
|
|
- pos += di -> d_reclen;
|
|
- }
|
|
- } while (lend);
|
|
+ dir = opendir("../html");
|
|
+ if (dir) {
|
|
+ while ((di = readdir(dir)) != NULL) {
|
|
+ sprintf(fname, "../html/%s", di->d_name);
|
|
+ fp = fopen(fname, "r");
|
|
+ if (fp && !fstat(fileno(fp), &fst) && S_ISREG(fst.st_mode)) {
|
|
+ strncpy(result + len, di->d_name, 22);
|
|
+ strcat(result, ";");
|
|
+
|
|
+ atime = localtime(&fst.st_mtime);
|
|
+ sprintf(st, "%ld;%02d.%02d.%04d %02d:%02d;",
|
|
+ (long)fst.st_size,
|
|
+ atime->tm_mday, atime->tm_mon + 1, atime->tm_year + 1900,
|
|
+ atime->tm_hour, atime->tm_min);
|
|
+ strcat(result, st);
|
|
|
|
- close (fd);
|
|
+ len = strlen(result);
|
|
+ cnt++;
|
|
+ fclose(fp);
|
|
+ }
|
|
+ }
|
|
+ closedir(dir);
|
|
+ }
|
|
#endif
|
|
|
|
strcat (result,"\n");
|
|
diff '--color=auto' -uNr work.orig/errormessage.c work/errormessage.c
|
|
--- work.orig/errormessage.c 2026-04-10 01:49:57.726577359 +0200
|
|
+++ work/errormessage.c 2026-04-10 01:50:23.442990590 +0200
|
|
@@ -60,6 +60,7 @@
|
|
#endif
|
|
|
|
#include <stdio.h>
|
|
+#include <string.h>
|
|
|
|
#include "remote.h"
|
|
#include "network.h"
|
|
diff '--color=auto' -uNr work.orig/fileio.c work/fileio.c
|
|
--- work.orig/fileio.c 2026-04-10 01:49:57.727751381 +0200
|
|
+++ work/fileio.c 2026-04-10 01:50:23.443154639 +0200
|
|
@@ -63,6 +63,7 @@
|
|
#include <stdint.h>
|
|
#include <unistd.h>
|
|
#include <ctype.h>
|
|
+#include <string.h>
|
|
|
|
typedef int DWORD;
|
|
#define closesocket close
|
|
@@ -88,63 +89,52 @@
|
|
|
|
extern byte rcmmflag;
|
|
|
|
-#ifdef LINUX
|
|
-
|
|
|
|
+#ifdef LINUX
|
|
int ReadIRTransDirectory (char filetype[],REMOTEBUFFER *buf,int start,byte statustype)
|
|
{
|
|
+ DIR *dir;
|
|
+ struct dirent *di;
|
|
+ int fl, dlen;
|
|
+ int cnt, cnt_total, nlen;
|
|
+
|
|
+ memset(buf, 0, sizeof(REMOTEBUFFER));
|
|
+ buf->statustype = statustype;
|
|
+ buf->statuslen = sizeof(REMOTEBUFFER);
|
|
+ buf->offset = (short)start;
|
|
+
|
|
+ if (statustype == STATUS_IRDBFILE) dlen = 5;
|
|
+ else dlen = 4;
|
|
+
|
|
+ dir = opendir(".");
|
|
+ if (!dir) return -1;
|
|
+
|
|
+ cnt = cnt_total = 0;
|
|
+
|
|
+ while ((di = readdir(dir)) != NULL) {
|
|
+ fl = (int)strlen(di->d_name) - dlen;
|
|
+ if (fl >= 1 && !strcmp(di->d_name + fl, filetype)) {
|
|
+ if (cnt_total >= start && cnt < 40) {
|
|
+ nlen = (int)strlen(di->d_name) - dlen;
|
|
+ if (nlen > 80) nlen = 80;
|
|
+ memset(buf->remotes[cnt].name, ' ', 80);
|
|
+ memcpy(buf->remotes[cnt].name, di->d_name, nlen);
|
|
+ cnt++;
|
|
+ }
|
|
+ cnt_total++;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ buf->count_buffer = cnt;
|
|
+ buf->count_total = cnt_total;
|
|
+ if (cnt == 40) buf->count_remaining = cnt_total - cnt;
|
|
+ else buf->count_remaining = 0;
|
|
|
|
- int fd,i,len,pos,res,fl,dlen;
|
|
- off64_t off = 0;
|
|
- char st[2048],msg[256];
|
|
- struct dirent64 *di;
|
|
-
|
|
- int cnt,cnt_total,nlen;
|
|
- memset (buf,0,sizeof (REMOTEBUFFER));
|
|
- buf->statustype = statustype;
|
|
- buf->statuslen = sizeof (REMOTEBUFFER);
|
|
- buf->offset = (short)start;
|
|
-
|
|
- if (statustype == STATUS_IRDBFILE) dlen = 5;
|
|
- else dlen = 4;
|
|
-
|
|
- fd = open (".",0);
|
|
-
|
|
- cnt = cnt_total = 0;
|
|
-
|
|
- do {
|
|
- len = getdirentries64 (fd,st,2048,&off);
|
|
-
|
|
- pos = 0;
|
|
- while (pos < len) {
|
|
- di = (struct dirent64 *)&st[pos];
|
|
- fl = strlen (di -> d_name) - dlen;
|
|
- if (fl >= 1 && !strcmp (di->d_name + fl,filetype)) {
|
|
- if (cnt_total >= start && cnt < 40) {
|
|
- nlen = strlen (di -> d_name) - dlen;
|
|
- if (nlen > 80) nlen = 80;
|
|
- memset (buf->remotes[cnt].name,' ',80);
|
|
- memcpy (buf->remotes[cnt].name,di -> d_name,nlen);
|
|
- cnt++;
|
|
- }
|
|
- cnt_total++;
|
|
- }
|
|
- pos += di -> d_reclen;
|
|
- }
|
|
- } while (len);
|
|
-
|
|
- buf->count_buffer = cnt;
|
|
- buf->count_total = cnt_total;
|
|
- if (cnt == 40) buf->count_remaining = cnt_total-cnt;
|
|
- else buf->count_remaining = 0;
|
|
-
|
|
- close (fd);
|
|
- return (0);
|
|
+ closedir(dir);
|
|
+ return 0;
|
|
}
|
|
-
|
|
#endif
|
|
|
|
-
|
|
#ifdef WIN32
|
|
|
|
int ReadIRTransDirectory (char filetype[],REMOTEBUFFER *buf,int start,byte statustype)
|
|
diff '--color=auto' -uNr work.orig/firmware.c work/firmware.c
|
|
--- work.orig/firmware.c 2026-04-10 01:49:57.727751381 +0200
|
|
+++ work/firmware.c 2026-04-10 01:50:23.443361495 +0200
|
|
@@ -250,60 +250,49 @@
|
|
buf->offset = start;
|
|
cnt = cnt_total = 0;
|
|
|
|
-#ifdef LINUX
|
|
-
|
|
|
|
- if (!start) {
|
|
- GetHardwareType (bus);
|
|
- //printf ("Type: %d\n",IRDevices[bus].fw_capabilities4);
|
|
-
|
|
- GetFirmwarePath (path);
|
|
- fd = open ("../Firmware",0);
|
|
-
|
|
- do {
|
|
- len = getdirentries64 (fd,st,2048,&off);
|
|
-
|
|
- pos = 0;
|
|
- while (pos < len) {
|
|
- di = (struct dirent64 *)&st[pos];
|
|
- cnt_total++;
|
|
- pos += di -> d_reclen;
|
|
- }
|
|
- } while (len);
|
|
-
|
|
- if (stat_fw_pnt) free (stat_fw_pnt);
|
|
- stat_fw_pnt = malloc (cnt_total * sizeof (FIRMWARELINE));
|
|
- firmware_file_cnt = 0;
|
|
-
|
|
- lseek (fd,0,SEEK_SET);
|
|
-
|
|
- do {
|
|
- len = getdirentries64 (fd,st,2048,&off);
|
|
-
|
|
- pos = 0;
|
|
- while (pos < len) {
|
|
- di = (struct dirent64 *)&st[pos];
|
|
-
|
|
- res = GetFirmwareInfo (path,di -> d_name,bus,&info);
|
|
- if (res != ERR_OPEN) {
|
|
- if (cnt_total >= start && cnt < 40) {
|
|
- strcpy (stat_fw_pnt[cnt].filename,di -> d_name);
|
|
- strcpy (stat_fw_pnt[cnt].ir_version,info.ir_version);
|
|
- strcpy (stat_fw_pnt[cnt].lan_version,info.net_version);
|
|
- strcpy (stat_fw_pnt[cnt].devicetype,info.devicetype);
|
|
- stat_fw_pnt[cnt].firmware_flags = info.firmware_flag;
|
|
- stat_fw_pnt[cnt].net_flag = info.net_type;
|
|
- cnt++;
|
|
- }
|
|
- }
|
|
- pos += di -> d_reclen;
|
|
- }
|
|
- } while (len);
|
|
+#ifdef LINUX
|
|
+ if (!start) {
|
|
+ DIR *dir;
|
|
+ struct dirent *di;
|
|
+
|
|
+ GetHardwareType(bus);
|
|
+ GetFirmwarePath(path);
|
|
+
|
|
+ dir = opendir("../Firmware");
|
|
+ if (!dir) return ERR_OPEN;
|
|
+
|
|
+ cnt_total = 0;
|
|
+ while ((di = readdir(dir)) != NULL) {
|
|
+ cnt_total++;
|
|
+ }
|
|
+ closedir(dir);
|
|
|
|
- close (fd);
|
|
- firmware_file_cnt = cnt;
|
|
+ if (stat_fw_pnt) free(stat_fw_pnt);
|
|
+ stat_fw_pnt = malloc(cnt_total * sizeof(FIRMWARELINE));
|
|
+ firmware_file_cnt = 0;
|
|
+
|
|
+ dir = opendir("../Firmware");
|
|
+ if (!dir) return ERR_OPEN;
|
|
+
|
|
+ while ((di = readdir(dir)) != NULL) {
|
|
+ res = GetFirmwareInfo(path, di->d_name, bus, &info);
|
|
+ if (res != ERR_OPEN) {
|
|
+ if (cnt_total >= start && cnt < 40) {
|
|
+ strcpy(stat_fw_pnt[cnt].filename, di->d_name);
|
|
+ strcpy(stat_fw_pnt[cnt].ir_version, info.ir_version);
|
|
+ strcpy(stat_fw_pnt[cnt].lan_version, info.net_version);
|
|
+ strcpy(stat_fw_pnt[cnt].devicetype, info.devicetype);
|
|
+ stat_fw_pnt[cnt].firmware_flags = info.firmware_flag;
|
|
+ stat_fw_pnt[cnt].net_flag = info.net_type;
|
|
+ cnt++;
|
|
+ }
|
|
+ }
|
|
}
|
|
|
|
+ closedir(dir);
|
|
+ firmware_file_cnt = cnt;
|
|
+ }
|
|
#endif
|
|
|
|
#ifdef WIN32
|
|
diff '--color=auto' -uNr work.orig/flashrom.c work/flashrom.c
|
|
--- work.orig/flashrom.c 2026-04-10 01:49:57.727751381 +0200
|
|
+++ work/flashrom.c 2026-04-10 01:50:23.443537587 +0200
|
|
@@ -50,6 +50,7 @@
|
|
#endif
|
|
|
|
#include <stdio.h>
|
|
+#include <string.h>
|
|
|
|
#include "remote.h"
|
|
#include "errcode.h"
|
|
diff '--color=auto' -uNr work.orig/lanio.c work/lanio.c
|
|
--- work.orig/lanio.c 2026-04-10 01:49:57.727751381 +0200
|
|
+++ work/lanio.c 2026-04-10 01:50:23.443678410 +0200
|
|
@@ -62,6 +62,7 @@
|
|
#include <sys/timeb.h>
|
|
#include <unistd.h>
|
|
#include <time.h>
|
|
+#include <string.h>
|
|
|
|
typedef int DWORD;
|
|
#define closesocket close
|
|
diff '--color=auto' -uNr work.orig/linuxserio.c work/linuxserio.c
|
|
--- work.orig/linuxserio.c 2026-04-10 01:49:57.727751381 +0200
|
|
+++ work/linuxserio.c 2026-04-10 01:50:23.443761792 +0200
|
|
@@ -44,6 +44,7 @@
|
|
#include <sys/un.h>
|
|
#include <arpa/inet.h>
|
|
#include <stdlib.h>
|
|
+#include <string.h>
|
|
|
|
#include "remote.h"
|
|
#include "errcode.h"
|
|
diff '--color=auto' -uNr work.orig/lowlevel.c work/lowlevel.c
|
|
--- work.orig/lowlevel.c 2026-04-10 01:49:57.727751381 +0200
|
|
+++ work/lowlevel.c 2026-04-10 01:50:23.443969825 +0200
|
|
@@ -67,6 +67,7 @@
|
|
#include <sys/time.h>
|
|
#include <netdb.h>
|
|
#include <unistd.h>
|
|
+#include <string.h>
|
|
|
|
typedef int DWORD;
|
|
#define closesocket close
|
|
diff '--color=auto' -uNr work.orig/mce.c work/mce.c
|
|
--- work.orig/mce.c 2026-04-10 01:49:57.726577359 +0200
|
|
+++ work/mce.c 2026-04-10 01:50:23.444228140 +0200
|
|
@@ -61,6 +61,7 @@
|
|
#include <fcntl.h>
|
|
#include <signal.h>
|
|
#include <stdint.h>
|
|
+#include <string.h>
|
|
|
|
typedef int DWORD;
|
|
#define closesocket close
|
|
diff '--color=auto' -uNr work.orig/server.c work/server.c
|
|
--- work.orig/server.c 2026-04-10 01:49:57.727751381 +0200
|
|
+++ work/server.c 2026-04-10 01:51:24.659575143 +0200
|
|
@@ -77,6 +77,7 @@
|
|
#include <stdint.h>
|
|
#include <sys/utsname.h>
|
|
#include <unistd.h>
|
|
+#include <string.h>
|
|
|
|
typedef int DWORD;
|
|
|
|
@@ -1545,7 +1546,6 @@
|
|
fclose (stdin);
|
|
fclose (stdout);
|
|
fclose (stderr);
|
|
- stderr = NULL;
|
|
setsid ();
|
|
fp = fopen ("/tmp/.irserver.pid","w");
|
|
if (fp) {
|
|
@@ -3024,93 +3024,69 @@
|
|
|
|
int ReadIRDatabase (void)
|
|
{
|
|
+ int res, fl;
|
|
+ char st[2048], msg[256];
|
|
+ DIR *dir;
|
|
+ struct dirent *di;
|
|
+ char *home = getenv("HOME");
|
|
+ char *rdir = getenv("IRTRANS_REMOTES");
|
|
+
|
|
+ if (irdb_path[0]) {
|
|
+ if (chdir(irdb_path)) {
|
|
+ sprintf(msg, "Error opening remote database %s\n", irdb_path);
|
|
+ log_print(msg, LOG_FATAL);
|
|
+ return ERR_NODATABASE;
|
|
+ }
|
|
+ }
|
|
+ else if (rdir) {
|
|
+ if (chdir(rdir)) {
|
|
+ sprintf(msg, "Error opening remote database %s\n", rdir);
|
|
+ log_print(msg, LOG_FATAL);
|
|
+ return ERR_NODATABASE;
|
|
+ }
|
|
+ }
|
|
+ else {
|
|
+ if (home)
|
|
+ snprintf(st, sizeof(st), "%s/.irtrans/remotes", home);
|
|
+
|
|
+ if (IRDataBaseRead) FreeDatabaseMemory();
|
|
+ else if (chdir("./remotes")
|
|
+ && !(home && chdir(st) == 0)
|
|
+ && chdir("/etc/irserver/remotes")
|
|
+ && chdir("/usr/local/share/irtrans/remotes")
|
|
+ && chdir("/usr/share/irtrans/remotes"))
|
|
+ return ERR_NODATABASE;
|
|
+ }
|
|
|
|
- int fd,i,len,pos,res,fl;
|
|
- off64_t off = 0;
|
|
- char st[2048],msg[256];
|
|
- struct dirent64 *di;
|
|
- char *home = getenv("HOME");
|
|
- char *rdir = getenv("IRTRANS_REMOTES");
|
|
-
|
|
- if (irdb_path[0]) {
|
|
- if (chdir (irdb_path)) {
|
|
- sprintf (msg,"Error opening remote database %s\n",irdb_path);
|
|
- log_print (msg,LOG_FATAL);
|
|
- return (ERR_NODATABASE);
|
|
- }
|
|
- }
|
|
- else if (rdir) {
|
|
- if (chdir (rdir)) {
|
|
- sprintf (msg,"Error opening remote database %s\n",rdir);
|
|
- log_print (msg,LOG_FATAL);
|
|
-
|
|
- return (ERR_NODATABASE);
|
|
- }
|
|
- }
|
|
-
|
|
- else {
|
|
- if (home)
|
|
- snprintf(st, sizeof(st), "%s/.irtrans/remotes", home);
|
|
-
|
|
- if (IRDataBaseRead) FreeDatabaseMemory ();
|
|
-
|
|
- else if (chdir ("./remotes")
|
|
- && !(home && chdir (st) == 0)
|
|
- && chdir ("/etc/irserver/remotes")
|
|
- && chdir ("/usr/local/share/irtrans/remotes")
|
|
- && chdir ("/usr/share/irtrans/remotes")) return (ERR_NODATABASE);
|
|
- }
|
|
-
|
|
- sprintf (msg,"Chdir to DB OK\n");
|
|
- log_print (msg,LOG_DEBUG);
|
|
-
|
|
- ReadRoutingTable ();
|
|
-
|
|
- sprintf (msg,"Read routing OK\n");
|
|
- log_print (msg,LOG_DEBUG);
|
|
-
|
|
- ReadSwitches ();
|
|
-
|
|
- sprintf (msg,"Read Switches OK\n");
|
|
- log_print (msg,LOG_DEBUG);
|
|
-
|
|
- fd = open (".",0);
|
|
+ sprintf(msg, "Chdir to DB OK\n");
|
|
+ log_print(msg, LOG_DEBUG);
|
|
|
|
- sprintf (msg,"Open DIR: %d\n",fd);
|
|
- log_print (msg,LOG_DEBUG);
|
|
+ ReadRoutingTable();
|
|
+ ReadSwitches();
|
|
|
|
- do {
|
|
- len = getdirentries64 (fd,st,2048,&off);
|
|
-
|
|
- sprintf (msg,"Get Dirent: %d\n",len);
|
|
- log_print (msg,LOG_DEBUG);
|
|
-
|
|
- pos = 0;
|
|
- while (pos < len) {
|
|
- di = (struct dirent64 *)&st[pos];
|
|
- fl = strlen (di -> d_name) - 4;
|
|
- if (fl >= 1 && !strcmp (di->d_name + fl,".rem")) {
|
|
- res = DBReadCommandFile (di->d_name);
|
|
- if (res) {
|
|
- sprintf (msg,"Error %d reading DB-File %s\n",res,di->d_name);
|
|
- log_print (msg,LOG_ERROR);
|
|
- }
|
|
- }
|
|
- pos += di -> d_reclen;
|
|
- }
|
|
- } while (len);
|
|
+ dir = opendir(".");
|
|
+ if (!dir) return ERR_NODATABASE;
|
|
|
|
- close (fd);
|
|
+ while ((di = readdir(dir)) != NULL) {
|
|
+ fl = (int)strlen(di->d_name) - 4;
|
|
+ if (fl >= 1 && !strcmp(di->d_name + fl, ".rem")) {
|
|
+ res = DBReadCommandFile(di->d_name);
|
|
+ if (res) {
|
|
+ sprintf(msg, "Error %d reading DB-File %s\n", res, di->d_name);
|
|
+ log_print(msg, LOG_ERROR);
|
|
+ }
|
|
+ }
|
|
+ }
|
|
|
|
- res = DBReferenceLinks ();
|
|
+ closedir(dir);
|
|
|
|
- DBShowStatus ();
|
|
- ReadAppConfig ();
|
|
+ res = DBReferenceLinks();
|
|
+ DBShowStatus();
|
|
+ ReadAppConfig();
|
|
|
|
- IRDataBaseRead = 1;
|
|
- return (0);
|
|
+ IRDataBaseRead = 1;
|
|
+ return 0;
|
|
}
|
|
-
|
|
#endif
|
|
|
|
#endif
|
|
diff '--color=auto' -uNr work.orig/webserver.c work/webserver.c
|
|
--- work.orig/webserver.c 2026-04-10 01:49:57.727751381 +0200
|
|
+++ work/webserver.c 2026-04-10 01:50:23.450901729 +0200
|
|
@@ -58,6 +58,7 @@
|
|
#include <signal.h>
|
|
#include <stdint.h>
|
|
#include <unistd.h>
|
|
+#include <string.h>
|
|
|
|
typedef int DWORD;
|
|
#define closesocket close
|
|
diff '--color=auto' -uNr work.orig/xap.c work/xap.c
|
|
--- work.orig/xap.c 2026-04-10 01:49:57.727751381 +0200
|
|
+++ work/xap.c 2026-04-10 01:50:23.451007562 +0200
|
|
@@ -57,6 +57,7 @@
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
+#include <string.h>
|
|
|
|
#ifdef LINUX
|
|
#include <time.h>
|
|
diff '--color=auto' -uNr work.orig/xbmc.c work/xbmc.c
|
|
--- work.orig/xbmc.c 2026-04-10 01:49:57.727751381 +0200
|
|
+++ work/xbmc.c 2026-04-10 01:50:23.451090784 +0200
|
|
@@ -46,6 +46,7 @@
|
|
#endif
|
|
|
|
#include <stdio.h>
|
|
+#include <string.h>
|
|
|
|
#ifdef LINUX
|
|
|