aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Makefile.in8
-rw-r--r--fish.spec.in1
-rw-r--r--fishd.c76
3 files changed, 79 insertions, 6 deletions
diff --git a/Makefile.in b/Makefile.in
index f9745b8e..626d96b5 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -85,6 +85,7 @@ FISH_TESTS_OBJS := $(COMMON_OBJS) $(COMMON_OBJS_WITH_CODE) \
# All objects that the system needs to build fishd
FISHD_OBJS := fishd.o env_universal_common.o common.o util.o wutil.o \
+ doc_src/fishd.o
# All objects needed to build mimedb
MIME_OBJS := mimedb.o xdgmimealias.o xdgmime.o xdgmimeglob.o \
@@ -171,7 +172,8 @@ PROGRAMS:=fish set_color @XSEL@ @SEQ_FALLBACK@ mimedb count fish_pager fishd
MANUALS:=doc_src/fish.1 @XSEL_MAN_PATH@ \
doc_src/builtin_doc/man/man1/mimedb.1 \
doc_src/builtin_doc/man/man1/set_color.1 \
- doc_src/builtin_doc/man/man1/count.1
+ doc_src/builtin_doc/man/man1/count.1 \
+ doc_src/builtin_doc/man/man1/fishd.1
#All translation message catalogs
TRANSLATIONS_SRC := $(wildcard po/*.po)
@@ -366,7 +368,7 @@ uninstall: uninstall-translations
rm -f $(DESTDIR)$(sysconfdir)$(fishinputfile)
rm -r $(DESTDIR)$(sysconfdir)$(fishdir)
rm -r $(DESTDIR)$(docdir)
- for i in fish.1* @XSEL_MAN@ mimedb.1* set_color.1* count.1*; do \
+ for i in fish.1* @XSEL_MAN@ mimedb.1* fishd.1* set_color.1* count.1*; do \
rm $(DESTDIR)$(mandir)/man1/$$i; \
done;
@@ -393,7 +395,7 @@ fish: $(FISH_OBJS)
fish_pager: $(FISH_PAGER_OBJS)
$(CC) $(FISH_PAGER_OBJS) $(LDFLAGS) -o $@
-fishd: $(FISHD_OBJS)
+fishd: $(FISHD_OBJS)
$(CC) $(FISHD_OBJS) $(LDFLAGS) -o $@
fish_tests: $(FISH_TESTS_OBJS)
diff --git a/fish.spec.in b/fish.spec.in
index 61812dc1..c2e49590 100644
--- a/fish.spec.in
+++ b/fish.spec.in
@@ -52,6 +52,7 @@ fi
%_mandir/man1/mimedb.1*
%_mandir/man1/set_color.1*
%_mandir/man1/count.1*
+%_mandir/man1/fishd.1*
%attr(0755,root,root) %_bindir/fish
%attr(0755,root,root) %_bindir/fishd
%attr(0755,root,root) %_bindir/fish_pager
diff --git a/fishd.c b/fishd.c
index 595b8a0b..2a029746 100644
--- a/fishd.c
+++ b/fishd.c
@@ -7,6 +7,9 @@ instances. When no clients are running, fishd will automatically shut
down and save.
*/
+
+#include "config.h"
+
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
@@ -19,6 +22,10 @@ down and save.
#include <pwd.h>
#include <fcntl.h>
+#ifdef HAVE_GETOPT_H
+#include <getopt.h>
+#endif
+
#include <errno.h>
#include <locale.h>
#include <signal.h>
@@ -76,6 +83,11 @@ static int sock;
static int quit=0;
/**
+ Dynamically generated function, made from the documentation in doc_src.
+*/
+void print_help();
+
+/**
Constructs the fish socket filename
*/
static char *get_socket_filename()
@@ -396,11 +408,9 @@ static void save()
*/
static void init()
{
- program_name=L"fishd";
sock = get_socket();
daemonize();
- wsetlocale( LC_ALL, L"" );
env_universal_common_init( &broadcast );
load();
@@ -419,8 +429,68 @@ int main( int argc, char ** argv )
fd_set read_fd, write_fd;
- init();
+ program_name=L"fishd";
+ wsetlocale( LC_ALL, L"" );
+
+ /*
+ Parse options
+ */
+ while( 1 )
+ {
+#ifdef HAVE_GETOPT_LONG
+ static struct option
+ long_options[] =
+ {
+ {
+ "help", no_argument, 0, 'h'
+ }
+ ,
+ {
+ "version", no_argument, 0, 'v'
+ }
+ ,
+ {
+ 0, 0, 0, 0
+ }
+ }
+ ;
+
+ int opt_index = 0;
+
+ int opt = getopt_long( argc,
+ argv,
+ "hv",
+ long_options,
+ &opt_index );
+
+#else
+ int opt = getopt( argc,
+ argv,
+ "hv" );
+#endif
+ if( opt == -1 )
+ break;
+
+ switch( opt )
+ {
+ case 0:
+ break;
+
+ case 'h':
+ print_help();
+ exit(0);
+
+ case 'v':
+ debug( 0, L"%ls, version %s\n", program_name, PACKAGE_VERSION );
+ exit( 0 );
+
+ case '?':
+ return 1;
+
+ }
+ }
+ init();
while(1)
{
connection_t *c;