tworking on cookies - surf - customized build of surf, the suckless webkit browser
 (HTM) git clone git://src.adamsgaard.dk/surf
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit b8105c64eda87a16e3cae4f7615cb20eb29f3870
 (DIR) parent e2cae4d1f55738de53046a324289f5868ce5a502
 (HTM) Author: Enno Boland (tox) <tox@s01.de>
       Date:   Wed, 24 Mar 2010 20:56:56 +0100
       
       working on cookies
       Diffstat:
         M surf.c                              |      39 +++++++++++++++++++++++++++++--
       
       1 file changed, 37 insertions(+), 2 deletions(-)
       ---
 (DIR) diff --git a/surf.c b/surf.c
       t@@ -80,7 +80,9 @@ static void drawindicator(Client *c);
        static gboolean exposeindicator(GtkWidget *w, GdkEventExpose *e, Client *c);
        static void find(Client *c, const Arg *arg);
        static const char *getatom(Client *c, Atom a);
       +static const char *getcookies(SoupURI *uri);
        static char *geturi(Client *c);
       +void gotheaders(SoupMessage *msg, gpointer user_data);
        static gboolean initdownload(WebKitWebView *v, WebKitDownload *o, Client *c);
        static void itemclick(GtkMenuItem *mi, Client *c);
        static gboolean keypress(GtkWidget *w, GdkEventKey *ev, Client *c);
       t@@ -99,6 +101,7 @@ static void reload(Client *c, const Arg *arg);
        static void resize(GtkWidget *w, GtkAllocation *a, Client *c);
        static void scroll(Client *c, const Arg *arg);
        static void setatom(Client *c, Atom a, const char *v);
       +static void setcookie(SoupCookie *c);
        static void setup(void);
        static void sigchld(int unused);
        static void source(Client *c, const Arg *arg);
       t@@ -301,6 +304,11 @@ find(Client *c, const Arg *arg) {
        }
        
        const char *
       +getcookies(SoupURI *uri) {
       +        return NULL;
       +}
       +
       +const char *
        getatom(Client *c, Atom a) {
                static char buf[BUFSIZ];
                Atom adummy;
       t@@ -328,6 +336,19 @@ geturi(Client *c) {
                return uri;
        }
        
       +void
       +gotheaders(SoupMessage *msg, gpointer v) {
       +        SoupURI *uri;
       +        GSList *l, *p;
       +
       +        uri = soup_message_get_uri(msg);
       +        for(p = l = soup_cookies_from_response(msg); p;
       +                p = g_slist_next(p))  {
       +                setcookie((SoupCookie *)p->data);
       +        }
       +        soup_cookies_free(l);
       +}
       +
        gboolean
        initdownload(WebKitWebView *view, WebKitDownload *o, Client *c) {
                const char *filename;
       t@@ -555,10 +576,17 @@ newclient(void) {
                return c;
        }
        
       -static void newrequest(SoupSession *s, SoupMessage *msg, gpointer v) {
       +void
       +newrequest(SoupSession *s, SoupMessage *msg, gpointer v) {
                SoupMessageHeaders *h = msg->request_headers;
       +        SoupURI *uri;
       +        const char *c;
        
                soup_message_headers_remove(h, "Cookie");
       +        uri = soup_message_get_uri(msg);
       +        if((c = getcookies(uri))) {
       +                soup_message_headers_append(h, "Cookie", c);
       +        }
        }
        
        void
       t@@ -669,6 +697,11 @@ scroll(Client *c, const Arg *arg) {
        }
        
        void
       +setcookie(SoupCookie *c) {
       +
       +}
       +
       +void
        setatom(Client *c, Atom a, const char *v) {
                XSync(dpy, False);
                ignorexprop++;
       t@@ -706,6 +739,7 @@ setup(void) {
                soup_session_remove_feature_by_type(s, soup_cookie_get_type());
                soup_session_remove_feature_by_type(s, soup_cookie_jar_get_type());
                g_signal_connect_after(G_OBJECT(s), "request-started", G_CALLBACK(newrequest), NULL);
       +        g_signal_connect_after(G_OBJECT(s), "got-headers", G_CALLBACK(gotheaders), NULL);
        
        
                /* proxy */
       t@@ -829,7 +863,8 @@ zoom(Client *c, const Arg *arg) {
                }
        }
        
       -int main(int argc, char *argv[]) {
       +int
       +main(int argc, char *argv[]) {
                int i;
                Arg arg;