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) {
 | 
					int property_nvlist_add(nvlist_ptr list, const char *prop, const char *value) {
 | 
				
			||||||
	return nvlist_add_string(list, prop, 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
 | 
					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
 | 
					#cgo LDFLAGS: -lzfs -lzpool -lnvpair
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <stdlib.h>
 | 
					#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.
 | 
					 * 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_NAME 256
 | 
				
			||||||
#define INT_MAX_VALUE 1024
 | 
					#define INT_MAX_VALUE 1024
 | 
				
			||||||
#define	ZAP_OLDMAXVALUELEN 1024
 | 
					#define	ZAP_OLDMAXVALUELEN 1024
 | 
				
			||||||
| 
						 | 
					@ -35,3 +38,6 @@ void free_properties(property_list_t *root);
 | 
				
			||||||
nvlist_ptr new_property_nvlist();
 | 
					nvlist_ptr new_property_nvlist();
 | 
				
			||||||
int property_nvlist_add(nvlist_ptr ptr, const char* prop, const char *value);
 | 
					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()
 | 
						defer r.Close()
 | 
				
			||||||
	go func() {
 | 
						go func() {
 | 
				
			||||||
		var tmpe error
 | 
							var tmpe error
 | 
				
			||||||
		saveOut := C.dup(C.fileno(C.stdout))
 | 
							saveOut := C.redirect_libzfs_stdout(C.int(w.Fd()))
 | 
				
			||||||
		if res := C.dup2(C.int(w.Fd()), C.fileno(C.stdout)); res < 0 {
 | 
							if saveOut < 0 {
 | 
				
			||||||
			tmpe = fmt.Errorf("Redirection of zfslib stdout failed %d", res)
 | 
								tmpe = fmt.Errorf("Redirection of zfslib stdout failed %d", saveOut)
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			tmpe = d.send(FromName, w, &flags)
 | 
								tmpe = d.send(FromName, w, &flags)
 | 
				
			||||||
			C.fflush(C.stdout)
 | 
								C.restore_libzfs_stdout(saveOut)
 | 
				
			||||||
			C.dup2(saveOut, C.fileno(C.stdout))
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		w.Close()
 | 
							w.Close()
 | 
				
			||||||
		errch <- tmpe
 | 
							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);
 | 
					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 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);
 | 
					int do_zpool_clear(zpool_list_t *pool, const char *device, u_int32_t rewind_policy);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@
 | 
				
			||||||
#include "zpool.h"
 | 
					#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;
 | 
						vdev_state_t newstate = VDEV_STATE_UNKNOWN;
 | 
				
			||||||
	zpool_vdev_online(pool->zph, path, flags, &newstate);
 | 
						zpool_vdev_online(pool->zph, path, flags, &newstate);
 | 
				
			||||||
	return newstate;
 | 
						return newstate;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue