镜像自地址
https://github.com/JGZYES/ParlzPackageManger.git
已同步 2026-09-11 08:52:45 +08:00
diag: log errno when popen/malloc fails in run_capture (Linux mirror lookup)
这个提交包含在:
+11
-2
@@ -3,6 +3,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <io.h>
|
#include <io.h>
|
||||||
@@ -29,10 +30,18 @@
|
|||||||
/* Read all output of `cmd` into a malloc'd buffer. */
|
/* Read all output of `cmd` into a malloc'd buffer. */
|
||||||
static char *run_capture(const char *cmd, size_t *out_len) {
|
static char *run_capture(const char *cmd, size_t *out_len) {
|
||||||
FILE *f = PMM_POPEN(cmd, "rb");
|
FILE *f = PMM_POPEN(cmd, "rb");
|
||||||
if (!f) return NULL;
|
if (!f) {
|
||||||
|
if (getenv("PMM_DEBUG"))
|
||||||
|
fprintf(stderr, "[http] popen(cmd) failed: errno=%d %s\n", errno, strerror(errno));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
size_t cap = 64 * 1024, len = 0;
|
size_t cap = 64 * 1024, len = 0;
|
||||||
char *buf = malloc(cap);
|
char *buf = malloc(cap);
|
||||||
if (!buf) { PMM_PCLOSE(f); return NULL; }
|
if (!buf) {
|
||||||
|
if (getenv("PMM_DEBUG"))
|
||||||
|
fprintf(stderr, "[http] malloc(%zu) failed: errno=%d %s\n", cap, errno, strerror(errno));
|
||||||
|
PMM_PCLOSE(f); return NULL;
|
||||||
|
}
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (len + 4096 > cap) {
|
if (len + 4096 > cap) {
|
||||||
cap *= 2;
|
cap *= 2;
|
||||||
|
|||||||
在新工单中引用
屏蔽一个用户