git-commit-vandalism/compat/disk.h
Elijah Newren f394e093df treewide: be explicit about dependence on gettext.h
Dozens of files made use of gettext functions, without explicitly
including gettext.h.  This made it more difficult to find which files
could remove a dependence on cache.h.  Make C files explicitly include
gettext.h if they are using it.

However, while compat/fsmonitor/fsm-ipc-darwin.c should also gain an
include of gettext.h, it was left out to avoid conflicting with an
in-flight topic.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2023-03-21 10:56:51 -07:00

58 lines
1.4 KiB
C

#ifndef COMPAT_DISK_H
#define COMPAT_DISK_H
#include "git-compat-util.h"
#include "gettext.h"
static int get_disk_info(struct strbuf *out)
{
struct strbuf buf = STRBUF_INIT;
int res = 0;
#ifdef GIT_WINDOWS_NATIVE
char volume_name[MAX_PATH], fs_name[MAX_PATH];
DWORD serial_number, component_length, flags;
ULARGE_INTEGER avail2caller, total, avail;
strbuf_realpath(&buf, ".", 1);
if (!GetDiskFreeSpaceExA(buf.buf, &avail2caller, &total, &avail)) {
error(_("could not determine free disk size for '%s'"),
buf.buf);
res = -1;
goto cleanup;
}
strbuf_setlen(&buf, offset_1st_component(buf.buf));
if (!GetVolumeInformationA(buf.buf, volume_name, sizeof(volume_name),
&serial_number, &component_length, &flags,
fs_name, sizeof(fs_name))) {
error(_("could not get info for '%s'"), buf.buf);
res = -1;
goto cleanup;
}
strbuf_addf(out, "Available space on '%s': ", buf.buf);
strbuf_humanise_bytes(out, avail2caller.QuadPart);
strbuf_addch(out, '\n');
#else
struct statvfs stat;
strbuf_realpath(&buf, ".", 1);
if (statvfs(buf.buf, &stat) < 0) {
error_errno(_("could not determine free disk size for '%s'"),
buf.buf);
res = -1;
goto cleanup;
}
strbuf_addf(out, "Available space on '%s': ", buf.buf);
strbuf_humanise_bytes(out, (off_t)stat.f_bsize * (off_t)stat.f_bavail);
strbuf_addf(out, " (mount flags 0x%lx)\n", stat.f_flag);
#endif
cleanup:
strbuf_release(&buf);
return res;
}
#endif /* COMPAT_DISK_H */