Changes to build on musl/alpine
This commit is contained in:
parent
145d6f8d7d
commit
7482756d85
23
common.c
23
common.c
|
@ -54,3 +54,26 @@ nvlist_ptr new_property_nvlist() {
|
|||
int property_nvlist_add(nvlist_ptr list, const char *prop, const char *value) {
|
||||
return nvlist_add_string(list, prop, value);
|
||||
}
|
||||
|
||||
int redirect_libzfs_stdout(int to) {
|
||||
int save, res;
|
||||
save = dup(STDOUT_FILENO);
|
||||
if (save < 0) {
|
||||
return save;
|
||||
}
|
||||
res = dup2(to, STDOUT_FILENO);
|
||||
if (res < 0) {
|
||||
return res;
|
||||
}
|
||||
return save;
|
||||
}
|
||||
|
||||
int restore_libzfs_stdout(int saved) {
|
||||
int res;
|
||||
fflush(stdout);
|
||||
res = dup2(saved, STDOUT_FILENO);
|
||||
if (res < 0) {
|
||||
return res;
|
||||
}
|
||||
close(saved);
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
package zfs
|
||||
|
||||
/*
|
||||
#cgo CFLAGS: -I /usr/include/libzfs -I /usr/include/libspl -DHAVE_IOCTL_IN_SYS_IOCTL_H
|
||||
#cgo CFLAGS: -I /usr/include/libzfs -I /usr/include/libspl -DHAVE_IOCTL_IN_SYS_IOCTL_H -D_GNU_SOURCE
|
||||
#cgo LDFLAGS: -lzfs -lzpool -lnvpair
|
||||
|
||||
#include <stdlib.h>
|
||||
|
|
6
common.h
6
common.h
|
@ -2,6 +2,9 @@
|
|||
* using libzfs from go language, make go code shorter and more readable.
|
||||
*/
|
||||
|
||||
#ifndef loff_t
|
||||
#define loff_t off_t
|
||||
#endif
|
||||
#define INT_MAX_NAME 256
|
||||
#define INT_MAX_VALUE 1024
|
||||
#define ZAP_OLDMAXVALUELEN 1024
|
||||
|
@ -35,3 +38,6 @@ void free_properties(property_list_t *root);
|
|||
nvlist_ptr new_property_nvlist();
|
||||
int property_nvlist_add(nvlist_ptr ptr, const char* prop, const char *value);
|
||||
|
||||
int redirect_libzfs_stdout(int to);
|
||||
int restore_libzfs_stdout(int saved);
|
||||
|
||||
|
|
|
@ -230,13 +230,12 @@ func (d *Dataset) SendSize(FromName string, flags SendFlags) (size int64, err er
|
|||
defer r.Close()
|
||||
go func() {
|
||||
var tmpe error
|
||||
saveOut := C.dup(C.fileno(C.stdout))
|
||||
if res := C.dup2(C.int(w.Fd()), C.fileno(C.stdout)); res < 0 {
|
||||
tmpe = fmt.Errorf("Redirection of zfslib stdout failed %d", res)
|
||||
saveOut := C.redirect_libzfs_stdout(C.int(w.Fd()))
|
||||
if saveOut < 0 {
|
||||
tmpe = fmt.Errorf("Redirection of zfslib stdout failed %d", saveOut)
|
||||
} else {
|
||||
tmpe = d.send(FromName, w, &flags)
|
||||
C.fflush(C.stdout)
|
||||
C.dup2(saveOut, C.fileno(C.stdout))
|
||||
C.restore_libzfs_stdout(saveOut)
|
||||
}
|
||||
w.Close()
|
||||
errch <- tmpe
|
||||
|
|
2
zpool.h
2
zpool.h
|
@ -79,7 +79,7 @@ nvlist_ptr get_zpool_vdev_tree(nvlist_ptr nv);
|
|||
|
||||
nvlist_ptr go_zpool_search_import(libzfs_handle_ptr zfsh, int paths, char **path, boolean_t do_scan);
|
||||
|
||||
__uint64_t set_zpool_vdev_online(zpool_list_t *pool, const char *path, int flags);
|
||||
uint64_t set_zpool_vdev_online(zpool_list_t *pool, const char *path, int flags);
|
||||
int set_zpool_vdev_offline(zpool_list_t *pool, const char *path, boolean_t istmp, boolean_t force);
|
||||
int do_zpool_clear(zpool_list_t *pool, const char *device, u_int32_t rewind_policy);
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
#include "zpool.h"
|
||||
|
||||
|
||||
__uint64_t set_zpool_vdev_online(zpool_list_t *pool, const char *path, int flags) {
|
||||
uint64_t set_zpool_vdev_online(zpool_list_t *pool, const char *path, int flags) {
|
||||
vdev_state_t newstate = VDEV_STATE_UNKNOWN;
|
||||
zpool_vdev_online(pool->zph, path, flags, &newstate);
|
||||
return newstate;
|
||||
|
|
Loading…
Reference in New Issue