diff options
author | LAN-TW <lantw44@gmail.com> | 2013-10-24 11:57:00 +0800 |
---|---|---|
committer | LAN-TW <lantw44@gmail.com> | 2013-10-24 11:57:00 +0800 |
commit | 00a434d5591166916ab85a5229984b447e09d8ae (patch) | |
tree | eefcfe340d2ca057c92da47df62a818c0aafc22e | |
parent | b6bf030497fb7814c5549b02540198c76ab9c98b (diff) | |
download | cn2013-00a434d5591166916ab85a5229984b447e09d8ae.tar.gz cn2013-00a434d5591166916ab85a5229984b447e09d8ae.tar.zst cn2013-00a434d5591166916ab85a5229984b447e09d8ae.zip |
HW1: 修正在 FreeBSD 編譯失敗的問題
-rw-r--r-- | hw1/configure.ac | 13 | ||||
-rw-r--r-- | hw1/connection.c | 3 | ||||
-rw-r--r-- | hw1/server-main.c | 2 | ||||
-rw-r--r-- | hw1/server.c | 9 | ||||
-rw-r--r-- | hw1/session.c | 6 | ||||
-rw-r--r-- | hw1/socktool.c | 2 |
6 files changed, 24 insertions, 11 deletions
diff --git a/hw1/configure.ac b/hw1/configure.ac index e37e45c..7c1ac81 100644 --- a/hw1/configure.ac +++ b/hw1/configure.ac @@ -8,6 +8,19 @@ AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE([foreign]) AM_SILENT_RULES([yes]) +AC_CANONICAL_HOST +AC_CANONICAL_BUILD +AH_TEMPLATE([_POSIX_C_SOURCE]) +AH_TEMPLATE([_XOPEN_SOURCE]) +AH_TEMPLATE([_BSD_SOURCE]) +case "$build_os" in + *linux*) + AC_DEFINE([_POSIX_C_SOURCE], [200809L]) + AC_DEFINE([_XOPEN_SOURCE], [700]) + AC_DEFINE([_BSD_SOURCE]) + ;; +esac + # Checks for programs. AC_PROG_CC AC_PROG_CC_C99 diff --git a/hw1/connection.c b/hw1/connection.c index 4ca17b2..237c9ad 100644 --- a/hw1/connection.c +++ b/hw1/connection.c @@ -12,6 +12,7 @@ #include <stdio.h> #include <string.h> #include <sys/socket.h> +#include <sys/stat.h> #include <sys/types.h> #include <time.h> #include <unistd.h> @@ -56,7 +57,7 @@ int ras_conn_init ( conn->id = id; conn->name = xsprintf ("%s-%d (%s-%s)", name, conn->id, - domain == AF_LOCAL ? "unix" : + domain == AF_UNIX ? "unix" : domain == AF_INET ? "ipv4" : domain == AF_INET6 ? "ipv6" : "unknown", perm == RAS_CONN_PERM_RESTRICTED ? "restricted" : diff --git a/hw1/server-main.c b/hw1/server-main.c index e313c0e..92ff84b 100644 --- a/hw1/server-main.c +++ b/hw1/server-main.c @@ -93,7 +93,7 @@ int main (int argc, char* argv[]) { /* XXX Check before unlink */ unlink ("/tmp/ras-server.sock"); - ras_server_init (&svr, RAS_CONN_PERM_ADMIN, AF_LOCAL, NULL, sid), sid++; + ras_server_init (&svr, RAS_CONN_PERM_ADMIN, AF_UNIX, NULL, sid), sid++; if (ras_server_listen (&svr, "/tmp/ras-server.sock", 0600) < 0) { return 1; } else { diff --git a/hw1/server.c b/hw1/server.c index 3794847..d98d4f2 100644 --- a/hw1/server.c +++ b/hw1/server.c @@ -12,6 +12,7 @@ #include <netinet/in.h> #include <stdbool.h> #include <stddef.h> +#include <string.h> #include <sys/socket.h> #include <sys/stat.h> #include <sys/types.h> @@ -33,7 +34,7 @@ int ras_server_init ( } void ras_server_destroy (RasServer* server) { - if (RAS_CONN (server)->domain == AF_LOCAL) { + if (RAS_CONN (server)->domain == AF_UNIX) { unlink (SOCKADDR_UN (&server->addr)->sun_path); } @@ -50,10 +51,10 @@ int ras_server_listen (RasServer* server, const char* addr, int arg) { socklen_t socklen; memset (&sock, 0, sizeof (sock)); switch (RAS_CONN (server)->domain) { - case AF_LOCAL: + case AF_UNIX: socklen = sizeof (struct sockaddr_un); len = socklen - offsetof (struct sockaddr_un, sun_path) - 1; - SOCKADDR_UN (&sock)->sun_family = AF_LOCAL; + SOCKADDR_UN (&sock)->sun_family = AF_UNIX; strncpy (SOCKADDR_UN (&sock)->sun_path, addr, len); ras_server_log (server, "addr = %s, mode = %o", addr, arg); break; @@ -100,7 +101,7 @@ int ras_server_listen (RasServer* server, const char* addr, int arg) { int yes = 1; setsockopt (fd, IPPROTO_IPV6, IPV6_V6ONLY, &yes, sizeof (yes)); } - if (RAS_CONN (server)->domain == AF_LOCAL) { + if (RAS_CONN (server)->domain == AF_UNIX) { fchmod (fd, arg); } diff --git a/hw1/session.c b/hw1/session.c index 4c4db13..b406c90 100644 --- a/hw1/session.c +++ b/hw1/session.c @@ -2,9 +2,6 @@ # include "config.h" #endif -#define _XOPEN_SOURCE 600 -#define _BSD_SOURCE - #include "session.h" #include "xwrap.h" @@ -23,6 +20,7 @@ #include <stdlib.h> #include <string.h> #include <sys/select.h> +#include <sys/socket.h> #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> @@ -262,7 +260,7 @@ int ras_session_start_shell (RasSession* session) { } ras_session_log (session, "new pseudo-tty is %s", slave_dev); } else { - if (socketpair (AF_LOCAL, SOCK_STREAM, 0, sockpair) < 0) { + if (socketpair (AF_UNIX, SOCK_STREAM, 0, sockpair) < 0) { write (RAS_CONN (session)->fd, noshell_msg, noshell_len); ras_session_log (session, "cannot socketpair: %s", strerror (errno)); return -1; diff --git a/hw1/socktool.c b/hw1/socktool.c index cf60b31..109a02c 100644 --- a/hw1/socktool.c +++ b/hw1/socktool.c @@ -26,7 +26,7 @@ static char* ras_socktool_get_name (int sockfd, SockNameGetter getter) { } int domain = sock.ss_family; - if (domain == AF_LOCAL) { + if (domain == AF_UNIX) { return xstrdup ("local process"); } |