Introduction
Introduction Statistics Contact Development Disclaimer Help
tAdd options for scriptfile, cookiefile and stylefile. And changing the default…
git clone git://src.adamsgaard.dk/surf
Log
Files
Refs
README
LICENSE
---
commit 4ce3808684c5ea5d14eab0c3e24119784d2ae255
parent 0b885f18e3aebee047e952620f8541491fe77b8a
Author: Christoph Lohmann <[email protected]>
Date: Wed, 31 Oct 2012 21:13:50 +0100
Add options for scriptfile, cookiefile and stylefile. And changing the default
behaviour of buildpath to be more like in open().
Diffstat:
A arg.h | 41 +++++++++++++++++++++++++++++…
M surf.1 | 12 ++++++++++++
M surf.c | 98 ++++++++++++++++++-----------…
3 files changed, 109 insertions(+), 42 deletions(-)
---
diff --git a/arg.h b/arg.h
t@@ -0,0 +1,41 @@
+/*
+ * Copy me if you can.
+ * by 20h
+ */
+
+#ifndef __ARG_H__
+#define __ARG_H__
+
+extern char *argv0;
+
+#define USED(x) ((void)(x))
+
+#define ARGBEGIN for (argv0 = *argv, argv++, argc--;\
+ argv[0] && argv[0][1]\
+ && argv[0][0] == '-';\
+ argc--, argv++) {\
+ char _argc;\
+ char **_argv;\
+ if (argv[0][1] == '-' && argv[0][2] == '\0') {\
+ argv++;\
+ argc--;\
+ break;\
+ }\
+ for (argv[0]++, _argv = argv; argv[0][0];\
+ argv[0]++) {\
+ if (_argv != argv)\
+ break;\
+ _argc = argv[0][0];\
+ switch (_argc)
+
+#define ARGEND }\
+ USED(_argc);\
+ }\
+ USED(argv);\
+ USED(argc);
+
+#define EARGF(x) ((argv[1] == NULL)? ((x), abort(), (char *)0) :\
+ (argc--, argv++, argv[0]))
+
+#endif
+
diff --git a/surf.1 b/surf.1
t@@ -3,10 +3,13 @@
surf \- simple webkit-based browser
.SH SYNOPSIS
.B surf
+.RB [-c\ cookiefile]
.RB [-e\ xid]
.RB [-i]
.RB [-p]
+.RB [-r\ scriptfile]
.RB [-s]
+.RB [-t\ stylefile]
.RB [-v]
.RB [-x]
.RB "URI"
t@@ -17,6 +20,9 @@ which makes it possible to embed it in another application. …
one can point surf to another URI by setting its XProperties.
.SH OPTIONS
.TP
+.B \-c cookiefile
+Specify the cookiefile to use.
+.TP
.B \-e xid
Reparents to window specified by xid.
.TP
t@@ -26,9 +32,15 @@ Disable Images
.B \-p
Disable Plugins
.TP
+.B \-r scriptfile
+Specify the user scriptfile.
+.TP
.B \-s
Disable Javascript
.TP
+.B \-t stylefile
+Specify the user stylefile.
+.TP
.B \-v
Prints version information to standard output, then exits.
.TP
diff --git a/surf.c b/surf.c
t@@ -20,6 +20,10 @@
#include <JavaScriptCore/JavaScript.h>
#include <sys/file.h>
+#include "arg.h"
+
+char *argv0;
+
#define LENGTH(x) (sizeof x / sizeof x[0])
#define COOKIEJAR_TYPE (cookiejar_get_type ())
#define COOKIEJAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COOKIEJAR_…
t@@ -74,7 +78,6 @@ static Client *clients = NULL;
static GdkNativeWindow embed = 0;
static gboolean showxid = FALSE;
static char winid[64];
-static char *progname;
static gboolean loadimage = 1, plugin = 1, script = 1, using_proxy = 0;
static char *buildpath(const char *path);
t@@ -138,10 +141,19 @@ buildpath(const char *path) {
FILE *f;
/* creating directory */
- if(path[0] == '/')
+ if(path[0] == '/') {
apath = g_strdup(path);
- else
- apath = g_strconcat(g_get_home_dir(), "/", path, NULL);
+ } else if(path[0] == '~') {
+ if(path[1] == '/') {
+ apath = g_strconcat(g_get_home_dir(), &path[1], NULL);
+ } else {
+ apath = g_strconcat(g_get_home_dir(), "/",
+ &path[1], NULL);
+ }
+ } else {
+ apath = g_strconcat(g_get_current_dir(), "/", path, NULL);
+ }
+
if((p = strrchr(apath, '/'))) {
*p = '\0';
g_mkdir_with_parents(apath, 0700);
t@@ -153,6 +165,7 @@ buildpath(const char *path) {
g_chmod(apath, 0600); /* always */
fclose(f);
}
+
return apath;
}
t@@ -216,7 +229,7 @@ cookiejar_new(const char *filename, gboolean read_only) {
return g_object_new(COOKIEJAR_TYPE,
SOUP_COOKIE_JAR_TEXT_FILENAME, filename,
SOUP_COOKIE_JAR_READ_ONLY, read_only, NULL);
-}
+}
static void
cookiejar_set_property(GObject *self, guint prop_id, const GValue *value, GPar…
t@@ -628,7 +641,7 @@ newwindow(Client *c, const Arg *arg, gboolean noembed) {
const Arg a = { .v = (void *)cmd };
char tmp[64];
- cmd[i++] = progname;
+ cmd[i++] = argv0;
if(embed && !noembed) {
cmd[i++] = "-e";
snprintf(tmp, LENGTH(tmp), "%u\n", (int)embed);
t@@ -905,7 +918,8 @@ updatewinid(Client *c) {
void
usage(void) {
fputs("surf - simple browser\n", stderr);
- die("usage: surf [-e xid] [-i] [-p] [-s] [-v] [-x] [uri]\n");
+ die("usage: surf [-c cookiefile] [-e xid] [-i] [-p] [-r scriptfile]"
+ " [-s] [-t stylefile] [-v] [-x] [uri]\n");
}
void
t@@ -928,49 +942,49 @@ zoom(Client *c, const Arg *arg) {
int
main(int argc, char *argv[]) {
- int i;
Arg arg;
- progname = argv[0];
/* command line args */
- for(i = 1, arg.v = NULL; i < argc && argv[i][0] == '-' &&
- argv[i][1] != '\0' && argv[i][2] == '\0'; i++) {
- if(!strcmp(argv[i], "--")) {
- i++;
- break;
- }
- switch(argv[i][1]) {
- case 'e':
- if(++i < argc)
- embed = strtol(argv[i], NULL, 0);
- else
- usage();
- break;
- case 'i':
- loadimage = 0;
- break;
- case 'p':
- plugin = 0;
- break;
- case 's':
- script = 0;
- break;
- case 'x':
- showxid = TRUE;
- break;
- case 'v':
- die("surf-"VERSION", ©2009-2012 surf engineers, see L…
- default:
- usage();
- }
- }
- if(i < argc)
- arg.v = argv[i];
+ ARGBEGIN {
+ case 'c':
+ cookiefile = EARGF(usage());
+ break;
+ case 'e':
+ embed = strtol(EARGF(usage()), NULL, 0);
+ break;
+ case 'i':
+ loadimage = 0;
+ break;
+ case 'p':
+ plugin = 0;
+ break;
+ case 'r':
+ scriptfile = EARGF(usage());
+ break;
+ case 's':
+ script = 0;
+ break;
+ case 't':
+ stylefile = EARGF(usage());
+ break;
+ case 'x':
+ showxid = TRUE;
+ break;
+ case 'v':
+ die("surf-"VERSION", ©2009-2012 surf engineers, see LICENSE f…
+ default:
+ usage();
+ } ARGEND;
+ if(argc > 0)
+ arg.v = argv[0];
+
setup();
newclient();
if(arg.v)
loaduri(clients, &arg);
gtk_main();
cleanup();
+
return EXIT_SUCCESS;
}
+
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.