Add gt_print()
This commit is contained in:
13
src/common.c
13
src/common.c
@@ -3,6 +3,19 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
int gt_print (const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
int ret = vfprintf(stdout, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
if (ret<0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
void gt_log (const char *fmt, ...)
|
void gt_log (const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ struct buffer {
|
|||||||
uint8_t *end;
|
uint8_t *end;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int gt_print (const char *, ...) _printf_(1,2);
|
||||||
void gt_log (const char *, ...) _printf_(1,2);
|
void gt_log (const char *, ...) _printf_(1,2);
|
||||||
void gt_fatal (const char *, ...) _printf_(1,2) _noreturn_;
|
void gt_fatal (const char *, ...) _printf_(1,2) _noreturn_;
|
||||||
void gt_na (const char *);
|
void gt_na (const char *);
|
||||||
|
|||||||
@@ -663,7 +663,7 @@ int main (int argc, char **argv)
|
|||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (version) {
|
if (version) {
|
||||||
printf(PACKAGE_STRING"\n");
|
gt_print(PACKAGE_STRING"\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
18
src/option.c
18
src/option.c
@@ -16,7 +16,7 @@ int option_flag (void *data, _unused_ int argc, _unused_ char **argv)
|
|||||||
int option_str (void *data, int argc, char **argv)
|
int option_str (void *data, int argc, char **argv)
|
||||||
{
|
{
|
||||||
if (argc<2 || !argv[1]) {
|
if (argc<2 || !argv[1]) {
|
||||||
printf("option `%s' need a string argument\n", argv[0]);
|
gt_print("option `%s' need a string argument\n", argv[0]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ int option_str (void *data, int argc, char **argv)
|
|||||||
int option_long (void *data, int argc, char **argv)
|
int option_long (void *data, int argc, char **argv)
|
||||||
{
|
{
|
||||||
if (argc<2 || !argv[1]) {
|
if (argc<2 || !argv[1]) {
|
||||||
printf("option `%s' need an integer argument\n", argv[0]);
|
gt_print("option `%s' need an integer argument\n", argv[0]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ int option_long (void *data, int argc, char **argv)
|
|||||||
long val = strtol(argv[1], &end, 0);
|
long val = strtol(argv[1], &end, 0);
|
||||||
|
|
||||||
if (errno || argv[1]==end) {
|
if (errno || argv[1]==end) {
|
||||||
printf("argument `%s' is not a valid integer\n", argv[1]);
|
gt_print("argument `%s' is not a valid integer\n", argv[1]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@ int option_option (void *data, int argc, char **argv)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (opts[k].set) {
|
if (opts[k].set) {
|
||||||
printf("option `%s' is already set\n", opts[k].name);
|
gt_print("option `%s' is already set\n", opts[k].name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ static void option_usage (struct option *opts, char *name)
|
|||||||
size_t slen = str_len(usage)+str_len(name);
|
size_t slen = str_len(usage)+str_len(name);
|
||||||
size_t len = slen;
|
size_t len = slen;
|
||||||
|
|
||||||
printf("%s%s", usage, name);
|
gt_print("%s%s", usage, name);
|
||||||
|
|
||||||
if (slen>40)
|
if (slen>40)
|
||||||
slen = 12;
|
slen = 12;
|
||||||
@@ -100,15 +100,15 @@ static void option_usage (struct option *opts, char *name)
|
|||||||
size_t inc = str_len(opts[k].name)+str_len(arg)+3;
|
size_t inc = str_len(opts[k].name)+str_len(arg)+3;
|
||||||
|
|
||||||
if (len+inc>72) {
|
if (len+inc>72) {
|
||||||
printf("\n%*s", (int)slen, "");
|
gt_print("\n%*s", (int)slen, "");
|
||||||
len = slen;
|
len = slen;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf(" [%s%s]", opts[k].name, arg);
|
gt_print(" [%s%s]", opts[k].name, arg);
|
||||||
len += inc;
|
len += inc;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("\n");
|
gt_print("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
int option (struct option *opts, int argc, char **argv)
|
int option (struct option *opts, int argc, char **argv)
|
||||||
@@ -121,7 +121,7 @@ int option (struct option *opts, int argc, char **argv)
|
|||||||
if (ret<0 || ret+1>=argc)
|
if (ret<0 || ret+1>=argc)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
printf("option `%s' is unknown\n", argv[ret+1]);
|
gt_print("option `%s' is unknown\n", argv[ret+1]);
|
||||||
option_usage(opts, argv[0]);
|
option_usage(opts, argv[0]);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ int tun_create (char *name, int multiqueue)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("tun name: %s\n", ifr.ifr_name);
|
gt_print("tun name: %s\n", ifr.ifr_name);
|
||||||
|
|
||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
@@ -91,7 +91,7 @@ int tun_create (_unused_ char *name, _unused_ int mq)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("tun name: /dev/utun%u\n", dev_id);
|
gt_print("tun name: /dev/utun%u\n", dev_id);
|
||||||
|
|
||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
@@ -104,12 +104,12 @@ int tun_create (_unused_ char *name, _unused_ int mq)
|
|||||||
for (unsigned dev_id = 0U; dev_id<32U; dev_id++) {
|
for (unsigned dev_id = 0U; dev_id<32U; dev_id++) {
|
||||||
char dev_path[11U];
|
char dev_path[11U];
|
||||||
|
|
||||||
snprintf(dev_path, sizeof(dev_path), "/dev/tun%u", dev_id);
|
sngt_print(dev_path, sizeof(dev_path), "/dev/tun%u", dev_id);
|
||||||
|
|
||||||
int fd = open(dev_path, O_RDWR);
|
int fd = open(dev_path, O_RDWR);
|
||||||
|
|
||||||
if (fd!=-1) {
|
if (fd!=-1) {
|
||||||
printf("tun name: /dev/tun%u\n", dev_id);
|
gt_print("tun name: /dev/tun%u\n", dev_id);
|
||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user