dillo  3.0.5
About: dillo is a small, fast, extensible Web browser particularly suitable for older or smaller computers and embedded systems (but only limited or no support for frames, CSS, JavaScript, Java).
  Fossies Dox: dillo-3.0.5.tar.gz  ("inofficial" and yet experimental doxygen-generated source code documentation)  

bookmarks.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <ctype.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/un.h>
#include <time.h>
#include <netdb.h>
#include <fcntl.h>
#include <signal.h>
#include "../dpip/dpip.h"
#include "dpiutil.h"
Include dependency graph for bookmarks.c:

Go to the source code of this file.

Classes

struct  BmRec
 
struct  BmSec
 

Macros

#define _MSG(...)
 
#define MSG(...)   printf("[bookmarks dpi]: " __VA_ARGS__)
 
#define DOCTYPE   "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
 

Functions

static char * make_one_line_str (char *str)
 
static void Unencode_str (char *e_str)
 
static int Bmsrv_dpi_send_status_msg (Dsh *sh, char *str)
 
static int Bms_node_by_key_cmp (const void *node, const void *key)
 
static int Bms_node_by_section_cmp (const void *node, const void *key)
 
static int Bms_sec_by_number_cmp (const void *node, const void *key)
 
static BmRecBms_get (int key)
 
static BmSecBms_get_sec (int key)
 
static void Bms_add (int section, char *url, char *title)
 
static void Bms_sec_add (char *title)
 
static void Bms_del (int key)
 
static void Bms_sec_del (int section)
 
static void Bms_move (int key, int target_section)
 
static void Bms_update_title (int key, char *n_title)
 
static void Bms_update_sec_title (int key, char *n_title)
 
static void Bms_free (void)
 
static void Bms_normalize (void)
 
static void Bms_check_import (void)
 
static int Bms_load (void)
 
static int Bms_cond_load (void)
 
static int Bms_save (void)
 
static int Bmsrv_add_bm (Dsh *sh, char *url, char *title)
 
static void Bmsrv_count_urls_and_sections (char *url, int *n_sec, int *n_url)
 
static int Bmsrv_send_reload_request (Dsh *sh, char *url)
 
static int Bmsrv_send_modify_page (Dsh *sh)
 
static int Bmsrv_send_modify_page_add_section (Dsh *sh)
 
static int Bmsrv_send_modify_page_add_url (Dsh *sh)
 
static int Bmsrv_send_modify_update (Dsh *sh, char *url)
 
static int Bmsrv_send_modify_answer (Dsh *sh, char *url)
 
static int Bmsrv_modify_delete (char *url)
 
static int Bmsrv_modify_move (char *url)
 
static int Bmsrv_modify_update (char *url)
 
static int Bmsrv_modify_add_section (char *url)
 
static int Bmsrv_modify_add_url (Dsh *sh, char *s_url)
 
static int Bmsrv_check_modify_request (Dsh *sh, char *url)
 
static int Bmsrv_process_modify_request (Dsh *sh, char *url)
 
static int send_bm_page (Dsh *sh)
 
static int Bmsrv_parse_token (Dsh *sh, char *Buf)
 
static void cleanup (void)
 
static void termination_handler (int signum)
 
int main (void)
 

Variables

static char * Header = "Content-type: text/html\n\n"
 
static char * BmFile = NULL
 
static time_t BmFileTimeStamp = 0
 
static DlistB_bms = NULL
 
static int bm_key = 0
 
static DlistB_secs = NULL
 
static int sec_key = 0
 
static int MODIFY_PAGE_NUM = 1
 
static const char * mainpage_header
 
static const char * modifypage_header
 
static const char * mainpage_sections_header
 
static const char * modifypage_sections_header
 
static const char * mainpage_sections_item
 
static const char * modifypage_sections_item
 
static const char * mainpage_sections_footer
 
static const char * modifypage_sections_footer
 
static const char * mainpage_middle1
 
static const char * modifypage_middle1
 
static const char * mainpage_section_card_header
 
static const char * modifypage_section_card_header
 
static const char * mainpage_section_card_item
 
static const char * modifypage_section_card_item
 
static const char * mainpage_section_card_footer
 
static const char * modifypage_section_card_footer
 
static const char * mainpage_footer
 
static const char * modifypage_footer
 
static const char * modifypage_add_section_page
 
static const char * modifypage_update_header
 
static const char * modifypage_update_title
 
static const char * modifypage_update_item_header
 
static const char * modifypage_update_item
 
static const char * modifypage_update_item2
 
static const char * modifypage_update_item_footer
 
static const char * modifypage_update_footer
 
static const char * modifypage_add_url
 

Macro Definition Documentation

◆ _MSG

#define _MSG (   ...)

Definition at line 44 of file bookmarks.c.

◆ DOCTYPE

#define DOCTYPE   "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"

Definition at line 47 of file bookmarks.c.

◆ MSG

#define MSG (   ...)    printf("[bookmarks dpi]: " __VA_ARGS__)

Definition at line 45 of file bookmarks.c.

Function Documentation

◆ Bms_add()

static void Bms_add ( int  section,
char *  url,
char *  title 
)
static

◆ Bms_check_import()

static void Bms_check_import ( void  )
static

◆ Bms_cond_load()

static int Bms_cond_load ( void  )
static

Definition at line 778 of file bookmarks.c.

References B_bms, B_secs, BmFile, BmFileTimeStamp, Bms_check_import(), Bms_load(), and dList_length().

Referenced by Bmsrv_parse_token().

◆ Bms_del()

static void Bms_del ( int  key)
static

◆ Bms_free()

static void Bms_free ( void  )
static

Definition at line 630 of file bookmarks.c.

References B_bms, B_secs, Bms_del(), Bms_sec_del(), dList_nth_data(), BmRec::key, and BmSec::section.

Referenced by Bms_load().

◆ Bms_get()

static BmRec* Bms_get ( int  key)
static

Definition at line 502 of file bookmarks.c.

References B_bms, Bms_node_by_key_cmp(), dList_find_custom(), and INT2VOIDP.

Referenced by Bmsrv_send_modify_update().

◆ Bms_get_sec()

static BmSec* Bms_get_sec ( int  key)
static

Definition at line 510 of file bookmarks.c.

References B_secs, Bms_sec_by_number_cmp(), dList_find_custom(), and INT2VOIDP.

Referenced by Bmsrv_send_modify_update().

◆ Bms_load()

static int Bms_load ( void  )
static

◆ Bms_move()

static void Bms_move ( int  key,
int  target_section 
)
static

Definition at line 589 of file bookmarks.c.

References B_bms, Bms_node_by_key_cmp(), dList_find_custom(), INT2VOIDP, and BmRec::section.

Referenced by Bmsrv_modify_move().

◆ Bms_node_by_key_cmp()

static int Bms_node_by_key_cmp ( const void *  node,
const void *  key 
)
static

Definition at line 478 of file bookmarks.c.

References VOIDP2INT.

Referenced by Bms_del(), Bms_get(), Bms_move(), and Bms_update_title().

◆ Bms_node_by_section_cmp()

static int Bms_node_by_section_cmp ( const void *  node,
const void *  key 
)
static

Definition at line 486 of file bookmarks.c.

References VOIDP2INT.

Referenced by Bms_sec_del().

◆ Bms_normalize()

static void Bms_normalize ( void  )
static

◆ Bms_save()

◆ Bms_sec_add()

static void Bms_sec_add ( char *  title)
static

◆ Bms_sec_by_number_cmp()

static int Bms_sec_by_number_cmp ( const void *  node,
const void *  key 
)
static

Definition at line 494 of file bookmarks.c.

References VOIDP2INT.

Referenced by Bms_get_sec(), Bms_sec_del(), and Bms_update_sec_title().

◆ Bms_sec_del()

static void Bms_sec_del ( int  section)
static

◆ Bms_update_sec_title()

static void Bms_update_sec_title ( int  key,
char *  n_title 
)
static

◆ Bms_update_title()

static void Bms_update_title ( int  key,
char *  n_title 
)
static

◆ Bmsrv_add_bm()

static int Bmsrv_add_bm ( Dsh sh,
char *  url,
char *  title 
)
static

Definition at line 866 of file bookmarks.c.

References Bms_add(), Bms_save(), Bmsrv_dpi_send_status_msg(), dFree(), sh, and Unescape_html_str().

Referenced by Bmsrv_parse_token().

◆ Bmsrv_check_modify_request()

static int Bmsrv_check_modify_request ( Dsh sh,
char *  url 
)
static

◆ Bmsrv_count_urls_and_sections()

static void Bmsrv_count_urls_and_sections ( char *  url,
int *  n_sec,
int *  n_url 
)
static

Definition at line 891 of file bookmarks.c.

Referenced by Bmsrv_check_modify_request(), and Bmsrv_send_modify_update().

◆ Bmsrv_dpi_send_status_msg()

static int Bmsrv_dpi_send_status_msg ( Dsh sh,
char *  str 
)
static

Definition at line 463 of file bookmarks.c.

References a_Dpip_build_cmd(), a_Dpip_dsh_write_str(), dFree(), and sh.

Referenced by Bmsrv_add_bm(), and Bmsrv_check_modify_request().

◆ Bmsrv_modify_add_section()

static int Bmsrv_modify_add_section ( char *  url)
static

Definition at line 1278 of file bookmarks.c.

References Bms_save(), Bms_sec_add(), dFree(), dStrdup(), and Unencode_str().

Referenced by Bmsrv_process_modify_request().

◆ Bmsrv_modify_add_url()

static int Bmsrv_modify_add_url ( Dsh sh,
char *  s_url 
)
static

◆ Bmsrv_modify_delete()

static int Bmsrv_modify_delete ( char *  url)
static

Definition at line 1138 of file bookmarks.c.

References Bms_del(), Bms_save(), and Bms_sec_del().

Referenced by Bmsrv_process_modify_request().

◆ Bmsrv_modify_move()

static int Bmsrv_modify_move ( char *  url)
static

Definition at line 1184 of file bookmarks.c.

References Bms_move(), and Bms_save().

Referenced by Bmsrv_process_modify_request().

◆ Bmsrv_modify_update()

static int Bmsrv_modify_update ( char *  url)
static

◆ Bmsrv_parse_token()

◆ Bmsrv_process_modify_request()

◆ Bmsrv_send_modify_answer()

static int Bmsrv_send_modify_answer ( Dsh sh,
char *  url 
)
static

◆ Bmsrv_send_modify_page()

◆ Bmsrv_send_modify_page_add_section()

static int Bmsrv_send_modify_page_add_section ( Dsh sh)
static

Definition at line 998 of file bookmarks.c.

References a_Dpip_dsh_write_str(), modifypage_add_section_page, and sh.

Referenced by Bmsrv_send_modify_answer().

◆ Bmsrv_send_modify_page_add_url()

static int Bmsrv_send_modify_page_add_url ( Dsh sh)
static

Definition at line 1011 of file bookmarks.c.

References a_Dpip_dsh_write_str(), modifypage_add_url, and sh.

Referenced by Bmsrv_send_modify_answer().

◆ Bmsrv_send_modify_update()

◆ Bmsrv_send_reload_request()

static int Bmsrv_send_reload_request ( Dsh sh,
char *  url 
)
static

Definition at line 914 of file bookmarks.c.

References a_Dpip_build_cmd(), a_Dpip_dsh_write_str(), dFree(), and sh.

Referenced by Bmsrv_process_modify_request().

◆ cleanup()

static void cleanup ( void  )
static

Definition at line 1676 of file bookmarks.c.

Referenced by main().

◆ main()

◆ make_one_line_str()

static char* make_one_line_str ( char *  str)
static

Definition at line 409 of file bookmarks.c.

References dNew.

Referenced by Bmsrv_send_modify_page(), and send_bm_page().

◆ send_bm_page()

◆ termination_handler()

static void termination_handler ( int  signum)
static

Definition at line 1684 of file bookmarks.c.

Referenced by main().

◆ Unencode_str()

static void Unencode_str ( char *  e_str)
static

Definition at line 437 of file bookmarks.c.

References dStrnAsciiCasecmp().

Referenced by Bmsrv_modify_add_section(), Bmsrv_modify_add_url(), and Bmsrv_modify_update().

Variable Documentation

◆ B_bms

◆ B_secs

◆ bm_key

int bm_key = 0
static

Definition at line 78 of file bookmarks.c.

Referenced by Bms_add(), and Bms_del().

◆ BmFile

char* BmFile = NULL
static

Definition at line 75 of file bookmarks.c.

Referenced by Bms_check_import(), Bms_cond_load(), Bms_load(), Bms_save(), and main().

◆ BmFileTimeStamp

time_t BmFileTimeStamp = 0
static

Definition at line 76 of file bookmarks.c.

Referenced by Bms_cond_load(), Bms_load(), and Bms_save().

◆ Header

char* Header = "Content-type: text/html\n\n"
static

Definition at line 74 of file bookmarks.c.

Referenced by Bmsrv_parse_token(), and Bmsrv_send_modify_answer().

◆ mainpage_footer

const char* mainpage_footer
static
Initial value:
=
" </td>\n"
" </tr>\n"
"</table>\n"
"</body>\n"
"</html>\n"

Definition at line 226 of file bookmarks.c.

Referenced by send_bm_page().

◆ mainpage_header

const char* mainpage_header
static
Initial value:
=
"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
"<html>\n"
"<head>\n"
"<title>Bookmarks</title>\n"
"</head>\n"
"<body id='dillo_bm' bgcolor='#778899' link='black' vlink='brown'>\n"
"<table border='1' cellpadding='0' width='100%'>\n"
" <tr><td>\n"
" <table width='100%' bgcolor='#b4b4b4'>\n"
" <tr>\n"
" <td> Bookmarks :: </td>\n"
" <td align='right'>\n"
" [<a href='dpi:/bm/modify'>modify</a>]\n"
" </td></tr>\n"
" </table></td></tr>\n"
"</table>\n"
"<br>\n"

Definition at line 93 of file bookmarks.c.

Referenced by send_bm_page().

◆ mainpage_middle1

const char* mainpage_middle1
static
Initial value:
=
" </td>\n"
" <td width='100%'>\n"

Definition at line 185 of file bookmarks.c.

Referenced by send_bm_page().

◆ mainpage_section_card_footer

const char* mainpage_section_card_footer
static
Initial value:
=
" </table>\n"
" <hr>\n"

Definition at line 218 of file bookmarks.c.

Referenced by send_bm_page().

◆ mainpage_section_card_header

const char* mainpage_section_card_header
static
Initial value:
=
" <a name='s%d'></a>\n"
" <table bgcolor='#bfbfbf' width='100%%' cellspacing='2'>\n"
" <tr>\n"
" <td bgcolor='#bf0c0c'><font color='white'><b>\n"
" &nbsp;&nbsp;&nbsp;%s&nbsp;&nbsp;&nbsp;</b></font></td>\n"
" <td bgcolor='white' width='100%%'>&nbsp;</td></tr>\n"

Definition at line 193 of file bookmarks.c.

Referenced by send_bm_page().

◆ mainpage_section_card_item

const char* mainpage_section_card_item
static
Initial value:
=
" <tr><td colspan='2'>\n"
" <a href='%s'>%s</a> </td></tr>\n"

Definition at line 209 of file bookmarks.c.

Referenced by send_bm_page().

◆ mainpage_sections_footer

const char* mainpage_sections_footer
static
Initial value:
=
" </table>\n"

Definition at line 179 of file bookmarks.c.

Referenced by send_bm_page().

◆ mainpage_sections_header

const char* mainpage_sections_header
static
Initial value:
=
"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
" <tr valign='top'>\n"
" <td>\n"
" <table bgcolor='#b4b4b4' border='2' cellpadding='4' cellspacing='1'>\n"
" <tr><td>\n"
" <table width='100%' bgcolor='#b4b4b4'>\n"
" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n"

Definition at line 150 of file bookmarks.c.

Referenced by send_bm_page().

◆ mainpage_sections_item

const char* mainpage_sections_item
static
Initial value:
=
" <tr><td align='center'>\n"
" <a href='#s%d'>%s</a></td></tr>\n"

Definition at line 168 of file bookmarks.c.

Referenced by send_bm_page().

◆ MODIFY_PAGE_NUM

int MODIFY_PAGE_NUM = 1
static

Definition at line 83 of file bookmarks.c.

Referenced by Bmsrv_process_modify_request(), and Bmsrv_send_modify_answer().

◆ modifypage_add_section_page

const char* modifypage_add_section_page
static

Definition at line 242 of file bookmarks.c.

Referenced by Bmsrv_send_modify_page_add_section().

◆ modifypage_add_url

const char* modifypage_add_url
static

Definition at line 357 of file bookmarks.c.

Referenced by Bmsrv_send_modify_page_add_url().

◆ modifypage_footer

const char* modifypage_footer
static
Initial value:
=
" </td>\n"
" </tr>\n"
"</table>\n"
"</form>\n"
"</body>\n"
"</html>\n"

Definition at line 233 of file bookmarks.c.

Referenced by Bmsrv_send_modify_page().

◆ modifypage_header

const char* modifypage_header
static

Definition at line 112 of file bookmarks.c.

Referenced by Bmsrv_send_modify_page().

◆ modifypage_middle1

const char* modifypage_middle1
static
Initial value:
=
" </td>\n"
" <td width='100%'>\n"

Definition at line 189 of file bookmarks.c.

Referenced by Bmsrv_send_modify_page().

◆ modifypage_section_card_footer

const char* modifypage_section_card_footer
static
Initial value:
=
" </table>\n"
" <hr>\n"

Definition at line 222 of file bookmarks.c.

Referenced by Bmsrv_send_modify_page().

◆ modifypage_section_card_header

const char* modifypage_section_card_header
static
Initial value:
=
" <a name='s%d'></a>\n"
" <table bgcolor='#bfbfbf' width='100%%' cellspacing='2'>\n"
" <tr>\n"
" <td bgcolor='#bf0c0c'><font color='white'><b>\n"
" &nbsp;&nbsp;&nbsp;%s&nbsp;&nbsp;&nbsp;</b></font></td>\n"
" <td bgcolor='white' width='100%%'>&nbsp;</td></tr>\n"

Definition at line 201 of file bookmarks.c.

Referenced by Bmsrv_send_modify_page().

◆ modifypage_section_card_item

const char* modifypage_section_card_item
static
Initial value:
=
" <tr>\n"
" <td colspan='2'><input type='checkbox' name='url%d'>\n"
" <a href='%s'>%s</a></td></tr>\n"

Definition at line 213 of file bookmarks.c.

Referenced by Bmsrv_send_modify_page().

◆ modifypage_sections_footer

const char* modifypage_sections_footer
static
Initial value:
=
" </table>\n"

Definition at line 182 of file bookmarks.c.

Referenced by Bmsrv_send_modify_page().

◆ modifypage_sections_header

const char* modifypage_sections_header
static
Initial value:
=
"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
" <tr valign='top'>\n"
" <td>\n"
" <table bgcolor='#b4b4b4' border='1'>\n"
" <tr><td>\n"
" <table width='100%' bgcolor='#b4b4b4'>\n"
" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n"

Definition at line 159 of file bookmarks.c.

Referenced by Bmsrv_send_modify_page().

◆ modifypage_sections_item

const char* modifypage_sections_item
static
Initial value:
=
" <tr><td>\n"
" <table width='100%%'>\n"
" <tr align='center'>"
" <td><input type='checkbox' name='s%d'></td>\n"
" <td width='100%%'><a href='#s%d'>%s</a></td></tr></table></td></tr>\n"

Definition at line 172 of file bookmarks.c.

Referenced by Bmsrv_send_modify_page().

◆ modifypage_update_footer

const char* modifypage_update_footer
static
Initial value:
=
"<table width='100%' cellpadding='4' border='0'>\n"
"<tr><td bgcolor='#a0a0a0'>\n"
" <input type='submit' name='submit' value='submit.'></td></tr>\n"
"</table>\n"
"</form>\n"
"</body>\n"
"</html>\n"

Definition at line 347 of file bookmarks.c.

Referenced by Bmsrv_send_modify_update().

◆ modifypage_update_header

const char* modifypage_update_header
static
Initial value:
=
"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
"<html>\n"
"<head>\n"
"<title>Bookmarks</title>\n"
"</head>\n"
"<body id='dillo_bm' bgcolor='#778899' link='black' vlink='brown'>\n"
"<table border='1' cellpadding='0' width='100%'>\n"
" <tr><td colspan='2'>\n"
" <table bgcolor='#b4b4b4' width='100%'>\n"
" <tr><td bgcolor='#b4b4b4'> Modify bookmarks :: update\n"
" </td>\n"
" <td align='right'>\n"
" [<a href='dpi:/bm/'>cancel</a>]\n"
" </td>\n"
" </tr>\n"
" </table></td></tr>\n"
"</table>\n"
"<br>\n"
"<form action='modify'>\n"
"<input type='hidden' name='operation' value='modify2'>\n"

Definition at line 289 of file bookmarks.c.

Referenced by Bmsrv_send_modify_update().

◆ modifypage_update_item

const char* modifypage_update_item
static
Initial value:
=
"<tr><td>\n"
" <table width='100%%' bgcolor='teal'>\n"
" <tr>\n"
" <td>Title:</td>\n"
" <td><input type='text' name='title%d' size='64'\n"
" value='%s'></td></tr>\n"
" <tr>\n"
" <td>URL:</td>\n"
" <td>%s</td></tr>\n"
" </table>\n"
" </td></tr>\n"

Definition at line 321 of file bookmarks.c.

Referenced by Bmsrv_send_modify_update().

◆ modifypage_update_item2

const char* modifypage_update_item2
static
Initial value:
=
"<tr><td>\n"
" <table width='100%%' bgcolor='teal'>\n"
" <tr>\n"
" <td>Title:</td>\n"
" <td><input type='text' name='s%d' size='64'\n"
" value='%s'></td></tr>\n"
" </table>\n"
" </td></tr>\n"

Definition at line 334 of file bookmarks.c.

Referenced by Bmsrv_send_modify_update().

◆ modifypage_update_item_footer

const char* modifypage_update_item_footer
static
Initial value:
=
"</table>\n"

Definition at line 344 of file bookmarks.c.

Referenced by Bmsrv_send_modify_update().

◆ modifypage_update_item_header

const char* modifypage_update_item_header
static
Initial value:
=
"<table width='100%' cellpadding='10'>\n"

Definition at line 318 of file bookmarks.c.

Referenced by Bmsrv_send_modify_update().

◆ modifypage_update_title

const char* modifypage_update_title
static
Initial value:
=
"<table border='1' width='100%%'>\n"
" <tr>\n"
" <td bgcolor='olive'><b>%s</b></td>\n"
" <td bgcolor='white' width='100%%'></td></tr>\n"
"</table>\n"

Definition at line 311 of file bookmarks.c.

Referenced by Bmsrv_send_modify_update().

◆ sec_key

int sec_key = 0
static

Definition at line 81 of file bookmarks.c.

Referenced by Bms_sec_add(), and Bms_sec_del().