add new api docs.
authorbarbieri <barbieri@gmail.com>
Thu, 23 Apr 2009 03:05:22 +0000 (03:05 +0000)
committerbarbieri <barbieri@gmail.com>
Thu, 23 Apr 2009 03:05:22 +0000 (03:05 +0000)
302 files changed:
www/api/annotated.html [new file with mode: 0644]
www/api/classes.html [new file with mode: 0644]
www/api/doxygen.css [new file with mode: 0644]
www/api/doxygen.png [new file with mode: 0644]
www/api/files.html [new file with mode: 0644]
www/api/functions.html [new file with mode: 0644]
www/api/functions_vars.html [new file with mode: 0644]
www/api/globals.html [new file with mode: 0644]
www/api/globals_0x61.html [new file with mode: 0644]
www/api/globals_0x63.html [new file with mode: 0644]
www/api/globals_0x64.html [new file with mode: 0644]
www/api/globals_0x66.html [new file with mode: 0644]
www/api/globals_0x67.html [new file with mode: 0644]
www/api/globals_0x69.html [new file with mode: 0644]
www/api/globals_0x6c.html [new file with mode: 0644]
www/api/globals_0x6e.html [new file with mode: 0644]
www/api/globals_0x70.html [new file with mode: 0644]
www/api/globals_0x72.html [new file with mode: 0644]
www/api/globals_0x73.html [new file with mode: 0644]
www/api/globals_0x74.html [new file with mode: 0644]
www/api/globals_0x77.html [new file with mode: 0644]
www/api/globals_defs.html [new file with mode: 0644]
www/api/globals_enum.html [new file with mode: 0644]
www/api/globals_eval.html [new file with mode: 0644]
www/api/globals_func.html [new file with mode: 0644]
www/api/globals_type.html [new file with mode: 0644]
www/api/globals_vars.html [new file with mode: 0644]
www/api/graph_legend.dot [new file with mode: 0644]
www/api/graph_legend.html [new file with mode: 0644]
www/api/group__LMS__API.html [new file with mode: 0644]
www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__CHARSET.html [new file with mode: 0644]
www/api/group__LMS__CHARSET_g0120c222a55e6d7d9bb24300300561ab_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__CHARSET_g0120c222a55e6d7d9bb24300300561ab_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB.html [new file with mode: 0644]
www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.dot [new file with mode: 0644]
www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__Plugin.html [new file with mode: 0644]
www/api/index.html [new file with mode: 0644]
www/api/lightmediascanner_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner_8c.html [new file with mode: 0644]
www/api/lightmediascanner_8c_24f4c44982b286dc3ca451ca1acb6123_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner_8c_24f4c44982b286dc3ca451ca1acb6123_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner_8c_66457cf4ec2ef4a50bd899f99e914650_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner_8c_66457cf4ec2ef4a50bd899f99e914650_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner_8c__incl.dot [new file with mode: 0644]
www/api/lightmediascanner_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner_8h-source.html [new file with mode: 0644]
www/api/lightmediascanner_8h.html [new file with mode: 0644]
www/api/lightmediascanner_8h_85b153a95dafb48c419dc1419e323567_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner_8h_85b153a95dafb48c419dc1419e323567_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner_8h__dep__incl.dot [new file with mode: 0644]
www/api/lightmediascanner_8h__dep__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner_8h_f6dfb5e9ed76e132ee7f45e7fe26415e_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner_8h_f6dfb5e9ed76e132ee7f45e7fe26415e_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8c.html [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8c__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8h-source.html [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8h.html [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8h__dep__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8h__dep__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__check_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__check_8c.html [new file with mode: 0644]
www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__check_8c__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__check_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db_8h-source.html [new file with mode: 0644]
www/api/lightmediascanner__db_8h.html [new file with mode: 0644]
www/api/lightmediascanner__db_8h__dep__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__db_8h__dep__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db_8h__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__db_8h__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__audio_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__db__audio_8c.html [new file with mode: 0644]
www/api/lightmediascanner__db__audio_8c__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__db__audio_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c.html [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__image_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__db__image_8c.html [new file with mode: 0644]
www/api/lightmediascanner__db__image_8c__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__db__image_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__playlist_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__db__playlist_8c.html [new file with mode: 0644]
www/api/lightmediascanner__db__playlist_8c__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__db__playlist_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h-source.html [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h.html [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h__dep__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h__dep__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__video_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__db__video_8c.html [new file with mode: 0644]
www/api/lightmediascanner__db__video_8c__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__db__video_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__plugin_8h-source.html [new file with mode: 0644]
www/api/lightmediascanner__plugin_8h.html [new file with mode: 0644]
www/api/lightmediascanner__plugin_8h__dep__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__plugin_8h__dep__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__plugin_8h__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__plugin_8h__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__private_8h-source.html [new file with mode: 0644]
www/api/lightmediascanner__private_8h.html [new file with mode: 0644]
www/api/lightmediascanner__private_8h__dep__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__private_8h__dep__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__private_8h__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__private_8h__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__process_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__process_8c.html [new file with mode: 0644]
www/api/lightmediascanner__process_8c_5db83cefb7a50bbecea9de26a6ef1c2c_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__process_8c_5db83cefb7a50bbecea9de26a6ef1c2c_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__process_8c__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__process_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__utils_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__utils_8c.html [new file with mode: 0644]
www/api/lightmediascanner__utils_8c_45d15c8bfeddaef0d5b1d0bd9ecc0c79_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__utils_8c_45d15c8bfeddaef0d5b1d0bd9ecc0c79_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__utils_8c_9ed157dee5c16f4c62c5ae6e281580cf_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__utils_8c_9ed157dee5c16f4c62c5ae6e281580cf_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__utils_8c__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__utils_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__utils_8h-source.html [new file with mode: 0644]
www/api/lightmediascanner__utils_8h.html [new file with mode: 0644]
www/api/lightmediascanner__utils_8h_5a7e5da69500a12f447a77177dbb6e0d_cgraph.dot [new file with mode: 0644]
www/api/lightmediascanner__utils_8h_5a7e5da69500a12f447a77177dbb6e0d_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__utils_8h__dep__incl.dot [new file with mode: 0644]
www/api/lightmediascanner__utils_8h__dep__incl.md5 [new file with mode: 0644]
www/api/modules.html [new file with mode: 0644]
www/api/structcinfo.html [new file with mode: 0644]
www/api/structcinfo__coll__graph.dot [new file with mode: 0644]
www/api/structcinfo__coll__graph.md5 [new file with mode: 0644]
www/api/structfds.html [new file with mode: 0644]
www/api/structlms.html [new file with mode: 0644]
www/api/structlms__audio__info.html [new file with mode: 0644]
www/api/structlms__audio__info__coll__graph.dot [new file with mode: 0644]
www/api/structlms__audio__info__coll__graph.md5 [new file with mode: 0644]
www/api/structlms__coll__graph.dot [new file with mode: 0644]
www/api/structlms__coll__graph.md5 [new file with mode: 0644]
www/api/structlms__context.html [new file with mode: 0644]
www/api/structlms__context__coll__graph.dot [new file with mode: 0644]
www/api/structlms__context__coll__graph.md5 [new file with mode: 0644]
www/api/structlms__db__cache.html [new file with mode: 0644]
www/api/structlms__db__cache__coll__graph.dot [new file with mode: 0644]
www/api/structlms__db__cache__coll__graph.md5 [new file with mode: 0644]
www/api/structlms__db__cache__entry.html [new file with mode: 0644]
www/api/structlms__file__info.html [new file with mode: 0644]
www/api/structlms__gps__info.html [new file with mode: 0644]
www/api/structlms__image__info.html [new file with mode: 0644]
www/api/structlms__image__info__coll__graph.dot [new file with mode: 0644]
www/api/structlms__image__info__coll__graph.md5 [new file with mode: 0644]
www/api/structlms__parser__info.html [new file with mode: 0644]
www/api/structlms__playlist__info.html [new file with mode: 0644]
www/api/structlms__playlist__info__coll__graph.dot [new file with mode: 0644]
www/api/structlms__playlist__info__coll__graph.md5 [new file with mode: 0644]
www/api/structlms__plugin.html [new file with mode: 0644]
www/api/structlms__plugin__info.html [new file with mode: 0644]
www/api/structlms__string__size.html [new file with mode: 0644]
www/api/structlms__video__info.html [new file with mode: 0644]
www/api/structlms__video__info__coll__graph.dot [new file with mode: 0644]
www/api/structlms__video__info__coll__graph.md5 [new file with mode: 0644]
www/api/structparser.html [new file with mode: 0644]
www/api/structparser__coll__graph.dot [new file with mode: 0644]
www/api/structparser__coll__graph.md5 [new file with mode: 0644]
www/api/structpinfo.html [new file with mode: 0644]
www/api/structpinfo__coll__graph.dot [new file with mode: 0644]
www/api/structpinfo__coll__graph.md5 [new file with mode: 0644]
www/api/structsinfo.html [new file with mode: 0644]
www/api/structsinfo__coll__graph.dot [new file with mode: 0644]
www/api/structsinfo__coll__graph.md5 [new file with mode: 0644]
www/api/tab_b.gif [new file with mode: 0644]
www/api/tab_l.gif [new file with mode: 0644]
www/api/tab_r.gif [new file with mode: 0644]
www/api/tabs.css [new file with mode: 0644]
www/python-api/api-objects.txt [new file with mode: 0644]
www/python-api/class-tree.html [new file with mode: 0644]
www/python-api/crarr.png [new file with mode: 0644]
www/python-api/epydoc.css [new file with mode: 0644]
www/python-api/epydoc.js [new file with mode: 0644]
www/python-api/frames.html [new file with mode: 0644]
www/python-api/help.html [new file with mode: 0644]
www/python-api/identifier-index.html [new file with mode: 0644]
www/python-api/index.html [new file with mode: 0644]
www/python-api/lightmediascanner-module.html [new file with mode: 0644]
www/python-api/lightmediascanner-pysrc.html [new file with mode: 0644]
www/python-api/lightmediascanner.c_lightmediascanner-module.html [new file with mode: 0644]
www/python-api/lightmediascanner.c_lightmediascanner-pysrc.html [new file with mode: 0644]
www/python-api/lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html [new file with mode: 0644]
www/python-api/lightmediascanner.c_lightmediascanner.Parser-class.html [new file with mode: 0644]
www/python-api/lightmediascanner.c_lightmediascanner.ParserInfo-class.html [new file with mode: 0644]
www/python-api/module-tree.html [new file with mode: 0644]
www/python-api/redirect.html [new file with mode: 0644]
www/python-api/toc-everything.html [new file with mode: 0644]
www/python-api/toc-lightmediascanner-module.html [new file with mode: 0644]
www/python-api/toc-lightmediascanner.c_lightmediascanner-module.html [new file with mode: 0644]
www/python-api/toc.html [new file with mode: 0644]

diff --git a/www/api/annotated.html b/www/api/annotated.html
new file mode 100644 (file)
index 0000000..3f6d4b9
--- /dev/null
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Structures</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>Data Structures</h1>Here are the data structures with brief descriptions:<table>
+  <tr><td class="indexkey"><a class="el" href="structcinfo.html">cinfo</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structfds.html">fds</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms.html">lms</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__audio__info.html">lms_audio_info</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__context.html">lms_context</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__db__cache.html">lms_db_cache</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__db__cache__entry.html">lms_db_cache_entry</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__file__info.html">lms_file_info</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__gps__info.html">lms_gps_info</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__image__info.html">lms_image_info</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__parser__info.html">lms_parser_info</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__playlist__info.html">lms_playlist_info</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__plugin.html">lms_plugin</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__plugin__info.html">lms_plugin_info</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__string__size.html">lms_string_size</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__video__info.html">lms_video_info</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structparser.html">parser</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structpinfo.html">pinfo</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structsinfo.html">sinfo</a></td><td class="indexvalue"></td></tr>
+</table>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/classes.html b/www/api/classes.html
new file mode 100644 (file)
index 0000000..1c4fe70
--- /dev/null
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Alphabetical List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>Data Structure Index</h1><p><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_G">G</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_L">L</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_P">P</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_V">V</a></div><p>
+<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
+<tr><td><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;A&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structlms__file__info.html">lms_file_info</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structpinfo.html">pinfo</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structlms__audio__info.html">lms_audio_info</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;G&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structlms__playlist__info.html">lms_playlist_info</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;C&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structlms__gps__info.html">lms_gps_info</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structlms__plugin.html">lms_plugin</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structcinfo.html">cinfo</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;I&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structlms__plugin__info.html">lms_plugin_info</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structlms__context.html">lms_context</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structlms__image__info.html">lms_image_info</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;S&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;D&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;L&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structsinfo.html">sinfo</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structlms__db__cache.html">lms_db_cache</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structlms.html">lms</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structlms__string__size.html">lms_string_size</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structlms__db__cache__entry.html">lms_db_cache_entry</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;P&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;V&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;F&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structparser.html">parser</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structlms__video__info.html">lms_video_info</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structfds.html">fds</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structlms__parser__info.html">lms_parser_info</a>&nbsp;&nbsp;&nbsp;</td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_G">G</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_L">L</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_P">P</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_V">V</a></div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/doxygen.css b/www/api/doxygen.css
new file mode 100644 (file)
index 0000000..3767dc9
--- /dev/null
@@ -0,0 +1,441 @@
+body, table, div, p, dl {
+       font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
+       font-size: 12px;
+}
+
+/* @group Heading Levels */
+
+h1 {
+       text-align: center;
+       font-size: 150%;
+}
+
+h2 {
+       font-size: 120%;
+}
+
+h3 {
+       font-size: 100%;
+}
+
+/* @end */
+
+caption {
+       font-weight: bold;
+}
+
+div.qindex, div.navtab{
+       background-color: #e8eef2;
+       border: 1px solid #84b0c7;
+       text-align: center;
+       margin: 2px;
+       padding: 2px;
+}
+
+div.qindex, div.navpath {
+       width: 100%;
+       line-height: 140%;
+}
+
+div.navtab {
+       margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+       color: #153788;
+       font-weight: normal;
+       text-decoration: none;
+}
+
+.contents a:visited {
+       color: #1b77c5;
+}
+
+a:hover {
+       text-decoration: underline;
+}
+
+a.qindex {
+       font-weight: bold;
+}
+
+a.qindexHL {
+       font-weight: bold;
+       background-color: #6666cc;
+       color: #ffffff;
+       border: 1px double #9295C2;
+}
+
+.contents a.qindexHL:visited {
+        color: #ffffff;
+}
+
+a.el {
+       font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code {
+}
+
+a.codeRef {
+}
+
+/* @end */
+
+dl.el {
+       margin-left: -1cm;
+}
+
+.fragment {
+       font-family: monospace, fixed;
+       font-size: 105%;
+}
+
+pre.fragment {
+       border: 1px solid #CCCCCC;
+       background-color: #f5f5f5;
+       padding: 4px 6px;
+       margin: 4px 8px 4px 2px;
+}
+
+div.ah {
+       background-color: black;
+       font-weight: bold;
+       color: #ffffff;
+       margin-bottom: 3px;
+       margin-top: 3px
+}
+
+div.groupHeader {
+       margin-left: 16px;
+       margin-top: 12px;
+       margin-bottom: 6px;
+       font-weight: bold;
+}
+
+div.groupText {
+       margin-left: 16px;
+       font-style: italic;
+}
+
+body {
+       background: white;
+       color: black;
+       margin-right: 20px;
+       margin-left: 20px;
+}
+
+td.indexkey {
+       background-color: #e8eef2;
+       font-weight: bold;
+       border: 1px solid #CCCCCC;
+       margin: 2px 0px 2px 0;
+       padding: 2px 10px;
+}
+
+td.indexvalue {
+       background-color: #e8eef2;
+       border: 1px solid #CCCCCC;
+       padding: 2px 10px;
+       margin: 2px 0px;
+}
+
+tr.memlist {
+       background-color: #f0f0f0;
+}
+
+p.formulaDsp {
+       text-align: center;
+}
+
+img.formulaDsp {
+       
+}
+
+img.formulaInl {
+       vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+       color: #008000
+}
+
+span.keywordtype {
+       color: #604020
+}
+
+span.keywordflow {
+       color: #e08000
+}
+
+span.comment {
+       color: #800000
+}
+
+span.preprocessor {
+       color: #806020
+}
+
+span.stringliteral {
+       color: #002080
+}
+
+span.charliteral {
+       color: #008080
+}
+
+span.vhdldigit { 
+       color: #ff00ff 
+}
+
+span.vhdlchar { 
+       color: #000000 
+}
+
+span.vhdlkeyword { 
+       color: #700070 
+}
+
+span.vhdllogic { 
+       color: #ff0000 
+}
+
+/* @end */
+
+.search {
+       color: #003399;
+       font-weight: bold;
+}
+
+form.search {
+       margin-bottom: 0px;
+       margin-top: 0px;
+}
+
+input.search {
+       font-size: 75%;
+       color: #000080;
+       font-weight: normal;
+       background-color: #e8eef2;
+}
+
+td.tiny {
+       font-size: 75%;
+}
+
+.dirtab {
+       padding: 4px;
+       border-collapse: collapse;
+       border: 1px solid #84b0c7;
+}
+
+th.dirtab {
+       background: #e8eef2;
+       font-weight: bold;
+}
+
+hr {
+       height: 0;
+       border: none;
+       border-top: 1px solid #666;
+}
+
+/* @group Member Descriptions */
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+       background-color: #FAFAFA;
+       border: none;
+       margin: 4px;
+       padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+       padding: 0px 8px 4px 8px;
+       color: #555;
+}
+
+.memItemLeft, .memItemRight, .memTemplParams {
+       border-top: 1px solid #ccc;
+}
+
+.memTemplParams {
+       color: #606060;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+       font-size: 80%;
+       color: #606060;
+       font-weight: normal;
+       margin-left: 3px;
+}
+
+.memnav {
+       background-color: #e8eef2;
+       border: 1px solid #84b0c7;
+       text-align: center;
+       margin: 2px;
+       margin-right: 15px;
+       padding: 2px;
+}
+
+.memitem {
+       padding: 0;
+}
+
+.memname {
+       white-space: nowrap;
+       font-weight: bold;
+}
+
+.memproto, .memdoc {
+       border: 1px solid #84b0c7;      
+}
+
+.memproto {
+       padding: 0;
+       background-color: #d5e1e8;
+       font-weight: bold;
+       -webkit-border-top-left-radius: 8px;
+       -webkit-border-top-right-radius: 8px;
+       -moz-border-radius-topleft: 8px;
+       -moz-border-radius-topright: 8px;
+}
+
+.memdoc {
+       padding: 2px 5px;
+       background-color: #eef3f5;
+       border-top-width: 0;
+       -webkit-border-bottom-left-radius: 8px;
+       -webkit-border-bottom-right-radius: 8px;
+       -moz-border-radius-bottomleft: 8px;
+       -moz-border-radius-bottomright: 8px;
+}
+
+.paramkey {
+       text-align: right;
+}
+
+.paramtype {
+       white-space: nowrap;
+}
+
+.paramname {
+       color: #602020;
+       white-space: nowrap;
+}
+.paramname em {
+       font-style: normal;
+}
+
+/* @end */
+
+/* @group Directory (tree) */
+
+/* for the tree view */
+
+.ftvtree {
+       font-family: sans-serif;
+       margin: 0.5em;
+}
+
+/* these are for tree view when used as main index */
+
+.directory {
+       font-size: 9pt;
+       font-weight: bold;
+}
+
+.directory h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+/*
+The following two styles can be used to replace the root node title
+with an image of your choice.  Simply uncomment the next two styles,
+specify the name of your image and be sure to set 'height' to the
+proper pixel height of your image.
+*/
+
+/*
+.directory h3.swap {
+       height: 61px;
+       background-repeat: no-repeat;
+       background-image: url("yourimage.gif");
+}
+.directory h3.swap span {
+       display: none;
+}
+*/
+
+.directory > h3 {
+       margin-top: 0;
+}
+
+.directory p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory div {
+       display: none;
+       margin: 0px;
+}
+
+.directory img {
+       vertical-align: -30%;
+}
+
+/* these are for tree view when not used as main index */
+
+.directory-alt {
+       font-size: 100%;
+       font-weight: bold;
+}
+
+.directory-alt h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+.directory-alt > h3 {
+       margin-top: 0;
+}
+
+.directory-alt p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory-alt div {
+       display: none;
+       margin: 0px;
+}
+
+.directory-alt img {
+       vertical-align: -30%;
+}
+
+/* @end */
+
+address {
+       font-style: normal;
+       color: #333;
+}
diff --git a/www/api/doxygen.png b/www/api/doxygen.png
new file mode 100644 (file)
index 0000000..f0a274b
Binary files /dev/null and b/www/api/doxygen.png differ
diff --git a/www/api/files.html b/www/api/files.html
new file mode 100644 (file)
index 0000000..ef59015
--- /dev/null
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: File Index</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>File List</h1>Here is a list of all files with brief descriptions:<table>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner_8c.html">lightmediascanner.c</a> <a href="lightmediascanner_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner_8h.html">lightmediascanner.h</a> <a href="lightmediascanner_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__charset__conv_8c.html">lightmediascanner_charset_conv.c</a> <a href="lightmediascanner__charset__conv_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__charset__conv_8h.html">lightmediascanner_charset_conv.h</a> <a href="lightmediascanner__charset__conv_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__check_8c.html">lightmediascanner_check.c</a> <a href="lightmediascanner__check_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a> <a href="lightmediascanner__db_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__db__audio_8c.html">lightmediascanner_db_audio.c</a> <a href="lightmediascanner__db__audio_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__db__common_8c.html">lightmediascanner_db_common.c</a> <a href="lightmediascanner__db__common_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__db__image_8c.html">lightmediascanner_db_image.c</a> <a href="lightmediascanner__db__image_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__db__playlist_8c.html">lightmediascanner_db_playlist.c</a> <a href="lightmediascanner__db__playlist_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a> <a href="lightmediascanner__db__private_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__db__video_8c.html">lightmediascanner_db_video.c</a> <a href="lightmediascanner__db__video_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__plugin_8h.html">lightmediascanner_plugin.h</a> <a href="lightmediascanner__plugin_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__private_8h.html">lightmediascanner_private.h</a> <a href="lightmediascanner__private_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__process_8c.html">lightmediascanner_process.c</a> <a href="lightmediascanner__process_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__utils_8c.html">lightmediascanner_utils.c</a> <a href="lightmediascanner__utils_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__utils_8h.html">lightmediascanner_utils.h</a> <a href="lightmediascanner__utils_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+</table>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/functions.html b/www/api/functions.html
new file mode 100644 (file)
index 0000000..238c15e
--- /dev/null
@@ -0,0 +1,254 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="functions.html"><span>All</span></a></li>
+      <li><a href="functions_vars.html"><span>Variables</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="#index_a"><span>a</span></a></li>
+      <li><a href="#index_b"><span>b</span></a></li>
+      <li><a href="#index_c"><span>c</span></a></li>
+      <li><a href="#index_d"><span>d</span></a></li>
+      <li><a href="#index_e"><span>e</span></a></li>
+      <li><a href="#index_f"><span>f</span></a></li>
+      <li><a href="#index_g"><span>g</span></a></li>
+      <li><a href="#index_h"><span>h</span></a></li>
+      <li><a href="#index_i"><span>i</span></a></li>
+      <li><a href="#index_l"><span>l</span></a></li>
+      <li><a href="#index_m"><span>m</span></a></li>
+      <li><a href="#index_n"><span>n</span></a></li>
+      <li><a href="#index_o"><span>o</span></a></li>
+      <li><a href="#index_p"><span>p</span></a></li>
+      <li><a href="#index_r"><span>r</span></a></li>
+      <li><a href="#index_s"><span>s</span></a></li>
+      <li><a href="#index_t"><span>t</span></a></li>
+      <li><a href="#index_u"><span>u</span></a></li>
+      <li><a href="#index_v"><span>v</span></a></li>
+      <li><a href="#index_w"><span>w</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+Here is a list of all struct and union fields with links to the structures/unions they belong to:
+<p>
+<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+<li>album
+: <a class="el" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">lms_audio_info</a>
+<li>altitude
+: <a class="el" href="structlms__gps__info.html#9b56b5dbae3e5c5722f7331c2bcbd520">lms_gps_info</a>
+<li>artist
+: <a class="el" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">lms_audio_info</a>
+, <a class="el" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">lms_video_info</a>
+, <a class="el" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">lms_image_info</a>
+<li>authors
+: <a class="el" href="structlms__plugin__info.html#5dd799fc0e3dd7e798f053ecf773e59a">lms_plugin_info</a>
+, <a class="el" href="structlms__parser__info.html#c22d79b37c4c2d513eaeb3b618f524bf">lms_parser_info</a>
+</ul>
+<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
+<li>base
+: <a class="el" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">lms_file_info</a>
+</ul>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>categories
+: <a class="el" href="structlms__parser__info.html#7ec98aa66587df4215d9d2e1be1efc04">lms_parser_info</a>
+, <a class="el" href="structlms__plugin__info.html#d5fd907e4bcc553eb9474aa132435c9c">lms_plugin_info</a>
+<li>cb
+: <a class="el" href="structlms.html#94615d22fba40d580a8a0055d28221c4">lms</a>
+<li>child
+: <a class="el" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">pinfo</a>
+<li>close
+: <a class="el" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">lms_plugin</a>
+<li>commit_counter
+: <a class="el" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">sinfo</a>
+<li>commit_interval
+: <a class="el" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">lms</a>
+<li>common
+: <a class="el" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">sinfo</a>
+, <a class="el" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">pinfo</a>
+<li>cs_conv
+: <a class="el" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">lms_context</a>
+, <a class="el" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">lms</a>
+</ul>
+<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
+<li>data
+: <a class="el" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">lms_db_cache_entry</a>
+, <a class="el" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">lms</a>
+<li>date
+: <a class="el" href="structlms__image__info.html#150973d3ac9f60f1b74f0a0d08c7f288">lms_image_info</a>
+<li>db
+: <a class="el" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">lms_db_cache_entry</a>
+, <a class="el" href="structlms__context.html#310d38a2fab9ecea67601d0c6a3d8d81">lms_context</a>
+, <a class="el" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">sinfo</a>
+<li>db_path
+: <a class="el" href="structlms.html#02e767169813808f193c23733ba89b4b">lms</a>
+<li>description
+: <a class="el" href="structlms__plugin__info.html#2e1df9478dd1f9dc62e81e208a2ebd3e">lms_plugin_info</a>
+, <a class="el" href="structlms__parser__info.html#46ca7f8f9d14332d96c34eec8425f92a">lms_parser_info</a>
+<li>dl_handle
+: <a class="el" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">parser</a>
+<li>dtime
+: <a class="el" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">lms_file_info</a>
+</ul>
+<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
+<li>entries
+: <a class="el" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">lms_db_cache</a>
+</ul>
+<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
+<li>finish
+: <a class="el" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">lms_plugin</a>
+<li>free_data
+: <a class="el" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">lms</a>
+</ul>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>genre
+: <a class="el" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">lms_audio_info</a>
+<li>gps
+: <a class="el" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">lms_image_info</a>
+</ul>
+<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
+<li>height
+: <a class="el" href="structlms__image__info.html#f2ae81781dadf7ecaa307b3bc91e710e">lms_image_info</a>
+</ul>
+<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+<li>id
+: <a class="el" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">lms_image_info</a>
+, <a class="el" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">lms_audio_info</a>
+, <a class="el" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">lms_file_info</a>
+, <a class="el" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">lms_playlist_info</a>
+, <a class="el" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">lms_video_info</a>
+<li>is_processing
+: <a class="el" href="structlms.html#bb03533445b77299e964b2ec02bca039">lms</a>
+</ul>
+<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+<li>latitude
+: <a class="el" href="structlms__gps__info.html#70f152098accf3d46f18bc159e3b4359">lms_gps_info</a>
+<li>len
+: <a class="el" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">lms_string_size</a>
+<li>lms
+: <a class="el" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">cinfo</a>
+<li>longitude
+: <a class="el" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">lms_gps_info</a>
+</ul>
+<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
+<li>master
+: <a class="el" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">pinfo</a>
+<li>match
+: <a class="el" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">lms_plugin</a>
+<li>mtime
+: <a class="el" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">lms_file_info</a>
+</ul>
+<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
+<li>n_entries
+: <a class="el" href="structlms__playlist__info.html#81cc52f5b6ce04cd64cf3884cb774663">lms_playlist_info</a>
+<li>n_parsers
+: <a class="el" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">lms</a>
+<li>name
+: <a class="el" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">lms_plugin</a>
+, <a class="el" href="structlms__parser__info.html#8c1195dd47805f8061b3c69691d60029">lms_parser_info</a>
+, <a class="el" href="structlms__plugin__info.html#fad60ec7f8d34b2082b353a03e2cb836">lms_plugin_info</a>
+</ul>
+<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
+<li>orientation
+: <a class="el" href="structlms__image__info.html#434330468b69d0f14b344c672d4778af">lms_image_info</a>
+</ul>
+<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+<li>parse
+: <a class="el" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">lms_plugin</a>
+<li>parser_match
+: <a class="el" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">sinfo</a>
+<li>parsers
+: <a class="el" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">lms</a>
+<li>path
+: <a class="el" href="structlms__parser__info.html#5ab9ec0ea57b30e14d5f6f671aac6590">lms_parser_info</a>
+, <a class="el" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">lms_file_info</a>
+<li>path_len
+: <a class="el" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">lms_file_info</a>
+<li>playcnt
+: <a class="el" href="structlms__audio__info.html#7197e471d313274c4e361b2ff9e60e8a">lms_audio_info</a>
+<li>plugin
+: <a class="el" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">parser</a>
+<li>poll
+: <a class="el" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">pinfo</a>
+<li>progress
+: <a class="el" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">lms</a>
+</ul>
+<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
+<li>r
+: <a class="el" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">fds</a>
+<li>rating
+: <a class="el" href="structlms__audio__info.html#932e73ccd8ff946831930be65d1ba2d2">lms_audio_info</a>
+</ul>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>setup
+: <a class="el" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">lms_plugin</a>
+<li>size
+: <a class="el" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">lms_db_cache</a>
+, <a class="el" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">lms_file_info</a>
+<li>slave
+: <a class="el" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">pinfo</a>
+<li>slave_timeout
+: <a class="el" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">lms</a>
+<li>so_path
+: <a class="el" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">parser</a>
+<li>start
+: <a class="el" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">lms_plugin</a>
+<li>stop_processing
+: <a class="el" href="structlms.html#d028e3681568215f6facd7d477c74461">lms</a>
+<li>str
+: <a class="el" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">lms_string_size</a>
+</ul>
+<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
+<li>title
+: <a class="el" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">lms_image_info</a>
+, <a class="el" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">lms_audio_info</a>
+, <a class="el" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">lms_playlist_info</a>
+, <a class="el" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">lms_video_info</a>
+<li>trackno
+: <a class="el" href="structlms__audio__info.html#d372f08ada955f75be8f218d90093242">lms_audio_info</a>
+</ul>
+<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
+<li>uri
+: <a class="el" href="structlms__parser__info.html#3f567c146a83ca281ae431e060ab55a9">lms_parser_info</a>
+, <a class="el" href="structlms__plugin__info.html#8f5826185c7cb3a4155fca8683b817e2">lms_plugin_info</a>
+</ul>
+<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
+<li>version
+: <a class="el" href="structlms__parser__info.html#49c7d15bae321ad3c899823f4348cf59">lms_parser_info</a>
+, <a class="el" href="structlms__plugin__info.html#032d3fd2490ad7907e1ea27abad59915">lms_plugin_info</a>
+</ul>
+<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
+<li>w
+: <a class="el" href="structfds.html#d13e19697072e306771103286a8316d0">fds</a>
+<li>width
+: <a class="el" href="structlms__image__info.html#fbd2df9f6f5f290ac02ce4d803677249">lms_image_info</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/functions_vars.html b/www/api/functions_vars.html
new file mode 100644 (file)
index 0000000..f59728a
--- /dev/null
@@ -0,0 +1,254 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields - Variables</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="functions.html"><span>All</span></a></li>
+      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="#index_a"><span>a</span></a></li>
+      <li><a href="#index_b"><span>b</span></a></li>
+      <li><a href="#index_c"><span>c</span></a></li>
+      <li><a href="#index_d"><span>d</span></a></li>
+      <li><a href="#index_e"><span>e</span></a></li>
+      <li><a href="#index_f"><span>f</span></a></li>
+      <li><a href="#index_g"><span>g</span></a></li>
+      <li><a href="#index_h"><span>h</span></a></li>
+      <li><a href="#index_i"><span>i</span></a></li>
+      <li><a href="#index_l"><span>l</span></a></li>
+      <li><a href="#index_m"><span>m</span></a></li>
+      <li><a href="#index_n"><span>n</span></a></li>
+      <li><a href="#index_o"><span>o</span></a></li>
+      <li><a href="#index_p"><span>p</span></a></li>
+      <li><a href="#index_r"><span>r</span></a></li>
+      <li><a href="#index_s"><span>s</span></a></li>
+      <li><a href="#index_t"><span>t</span></a></li>
+      <li><a href="#index_u"><span>u</span></a></li>
+      <li><a href="#index_v"><span>v</span></a></li>
+      <li><a href="#index_w"><span>w</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+<li>album
+: <a class="el" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">lms_audio_info</a>
+<li>altitude
+: <a class="el" href="structlms__gps__info.html#9b56b5dbae3e5c5722f7331c2bcbd520">lms_gps_info</a>
+<li>artist
+: <a class="el" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">lms_audio_info</a>
+, <a class="el" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">lms_video_info</a>
+, <a class="el" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">lms_image_info</a>
+<li>authors
+: <a class="el" href="structlms__plugin__info.html#5dd799fc0e3dd7e798f053ecf773e59a">lms_plugin_info</a>
+, <a class="el" href="structlms__parser__info.html#c22d79b37c4c2d513eaeb3b618f524bf">lms_parser_info</a>
+</ul>
+<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
+<li>base
+: <a class="el" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">lms_file_info</a>
+</ul>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>categories
+: <a class="el" href="structlms__parser__info.html#7ec98aa66587df4215d9d2e1be1efc04">lms_parser_info</a>
+, <a class="el" href="structlms__plugin__info.html#d5fd907e4bcc553eb9474aa132435c9c">lms_plugin_info</a>
+<li>cb
+: <a class="el" href="structlms.html#94615d22fba40d580a8a0055d28221c4">lms</a>
+<li>child
+: <a class="el" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">pinfo</a>
+<li>close
+: <a class="el" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">lms_plugin</a>
+<li>commit_counter
+: <a class="el" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">sinfo</a>
+<li>commit_interval
+: <a class="el" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">lms</a>
+<li>common
+: <a class="el" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">sinfo</a>
+, <a class="el" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">pinfo</a>
+<li>cs_conv
+: <a class="el" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">lms_context</a>
+, <a class="el" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">lms</a>
+</ul>
+<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
+<li>data
+: <a class="el" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">lms_db_cache_entry</a>
+, <a class="el" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">lms</a>
+<li>date
+: <a class="el" href="structlms__image__info.html#150973d3ac9f60f1b74f0a0d08c7f288">lms_image_info</a>
+<li>db
+: <a class="el" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">lms_db_cache_entry</a>
+, <a class="el" href="structlms__context.html#310d38a2fab9ecea67601d0c6a3d8d81">lms_context</a>
+, <a class="el" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">sinfo</a>
+<li>db_path
+: <a class="el" href="structlms.html#02e767169813808f193c23733ba89b4b">lms</a>
+<li>description
+: <a class="el" href="structlms__plugin__info.html#2e1df9478dd1f9dc62e81e208a2ebd3e">lms_plugin_info</a>
+, <a class="el" href="structlms__parser__info.html#46ca7f8f9d14332d96c34eec8425f92a">lms_parser_info</a>
+<li>dl_handle
+: <a class="el" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">parser</a>
+<li>dtime
+: <a class="el" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">lms_file_info</a>
+</ul>
+<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
+<li>entries
+: <a class="el" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">lms_db_cache</a>
+</ul>
+<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
+<li>finish
+: <a class="el" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">lms_plugin</a>
+<li>free_data
+: <a class="el" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">lms</a>
+</ul>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>genre
+: <a class="el" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">lms_audio_info</a>
+<li>gps
+: <a class="el" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">lms_image_info</a>
+</ul>
+<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
+<li>height
+: <a class="el" href="structlms__image__info.html#f2ae81781dadf7ecaa307b3bc91e710e">lms_image_info</a>
+</ul>
+<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+<li>id
+: <a class="el" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">lms_image_info</a>
+, <a class="el" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">lms_audio_info</a>
+, <a class="el" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">lms_file_info</a>
+, <a class="el" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">lms_playlist_info</a>
+, <a class="el" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">lms_video_info</a>
+<li>is_processing
+: <a class="el" href="structlms.html#bb03533445b77299e964b2ec02bca039">lms</a>
+</ul>
+<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+<li>latitude
+: <a class="el" href="structlms__gps__info.html#70f152098accf3d46f18bc159e3b4359">lms_gps_info</a>
+<li>len
+: <a class="el" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">lms_string_size</a>
+<li>lms
+: <a class="el" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">cinfo</a>
+<li>longitude
+: <a class="el" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">lms_gps_info</a>
+</ul>
+<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
+<li>master
+: <a class="el" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">pinfo</a>
+<li>match
+: <a class="el" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">lms_plugin</a>
+<li>mtime
+: <a class="el" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">lms_file_info</a>
+</ul>
+<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
+<li>n_entries
+: <a class="el" href="structlms__playlist__info.html#81cc52f5b6ce04cd64cf3884cb774663">lms_playlist_info</a>
+<li>n_parsers
+: <a class="el" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">lms</a>
+<li>name
+: <a class="el" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">lms_plugin</a>
+, <a class="el" href="structlms__parser__info.html#8c1195dd47805f8061b3c69691d60029">lms_parser_info</a>
+, <a class="el" href="structlms__plugin__info.html#fad60ec7f8d34b2082b353a03e2cb836">lms_plugin_info</a>
+</ul>
+<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
+<li>orientation
+: <a class="el" href="structlms__image__info.html#434330468b69d0f14b344c672d4778af">lms_image_info</a>
+</ul>
+<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+<li>parse
+: <a class="el" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">lms_plugin</a>
+<li>parser_match
+: <a class="el" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">sinfo</a>
+<li>parsers
+: <a class="el" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">lms</a>
+<li>path
+: <a class="el" href="structlms__parser__info.html#5ab9ec0ea57b30e14d5f6f671aac6590">lms_parser_info</a>
+, <a class="el" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">lms_file_info</a>
+<li>path_len
+: <a class="el" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">lms_file_info</a>
+<li>playcnt
+: <a class="el" href="structlms__audio__info.html#7197e471d313274c4e361b2ff9e60e8a">lms_audio_info</a>
+<li>plugin
+: <a class="el" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">parser</a>
+<li>poll
+: <a class="el" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">pinfo</a>
+<li>progress
+: <a class="el" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">lms</a>
+</ul>
+<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
+<li>r
+: <a class="el" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">fds</a>
+<li>rating
+: <a class="el" href="structlms__audio__info.html#932e73ccd8ff946831930be65d1ba2d2">lms_audio_info</a>
+</ul>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>setup
+: <a class="el" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">lms_plugin</a>
+<li>size
+: <a class="el" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">lms_db_cache</a>
+, <a class="el" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">lms_file_info</a>
+<li>slave
+: <a class="el" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">pinfo</a>
+<li>slave_timeout
+: <a class="el" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">lms</a>
+<li>so_path
+: <a class="el" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">parser</a>
+<li>start
+: <a class="el" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">lms_plugin</a>
+<li>stop_processing
+: <a class="el" href="structlms.html#d028e3681568215f6facd7d477c74461">lms</a>
+<li>str
+: <a class="el" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">lms_string_size</a>
+</ul>
+<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
+<li>title
+: <a class="el" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">lms_image_info</a>
+, <a class="el" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">lms_audio_info</a>
+, <a class="el" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">lms_playlist_info</a>
+, <a class="el" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">lms_video_info</a>
+<li>trackno
+: <a class="el" href="structlms__audio__info.html#d372f08ada955f75be8f218d90093242">lms_audio_info</a>
+</ul>
+<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
+<li>uri
+: <a class="el" href="structlms__parser__info.html#3f567c146a83ca281ae431e060ab55a9">lms_parser_info</a>
+, <a class="el" href="structlms__plugin__info.html#8f5826185c7cb3a4155fca8683b817e2">lms_plugin_info</a>
+</ul>
+<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
+<li>version
+: <a class="el" href="structlms__parser__info.html#49c7d15bae321ad3c899823f4348cf59">lms_parser_info</a>
+, <a class="el" href="structlms__plugin__info.html#032d3fd2490ad7907e1ea27abad59915">lms_plugin_info</a>
+</ul>
+<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
+<li>w
+: <a class="el" href="structfds.html#d13e19697072e306771103286a8316d0">fds</a>
+<li>width
+: <a class="el" href="structlms__image__info.html#fbd2df9f6f5f290ac02ce4d803677249">lms_image_info</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals.html b/www/api/globals.html
new file mode 100644 (file)
index 0000000..651fa58
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="globals.html#index__"><span>_</span></a></li>
+      <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+      <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+      <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+      <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+      <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+      <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+      <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+      <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+      <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+      <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+      <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+      <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+      <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index__">- _ -</a></h3><ul>
+<li>_DB_T_UPDATE
+: <a class="el" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">lightmediascanner_db_audio.c</a>
+<li>_GNU_SOURCE
+: <a class="el" href="lightmediascanner__check_8c.html#369266c24eacffb87046522897a570d5">lightmediascanner_check.c</a>
+, <a class="el" href="lightmediascanner__process_8c.html#369266c24eacffb87046522897a570d5">lightmediascanner_process.c</a>
+<li>_LIGHTMEDIASCANNER_CHARSET_CONV_H_
+: <a class="el" href="lightmediascanner__charset__conv_8h.html#79f872f99949ecde4c1661e4b78b4c2b">lightmediascanner_charset_conv.h</a>
+<li>_LIGHTMEDIASCANNER_DB_H_
+: <a class="el" href="lightmediascanner__db_8h.html#5360af19a6df2e8b0d326344bb27e151">lightmediascanner_db.h</a>
+<li>_LIGHTMEDIASCANNER_DB_PRIVATE_H_
+: <a class="el" href="lightmediascanner__db__private_8h.html#97d5ed207ef5b72f4fba0cab38594bb7">lightmediascanner_db_private.h</a>
+<li>_LIGHTMEDIASCANNER_H_
+: <a class="el" href="lightmediascanner_8h.html#e97a674be7c85b0914a6acbafe994998">lightmediascanner.h</a>
+<li>_LIGHTMEDIASCANNER_PLUGIN_H_
+: <a class="el" href="lightmediascanner__plugin_8h.html#25abdf2375defcfc83bf95ef930fc739">lightmediascanner_plugin.h</a>
+<li>_LIGHTMEDIASCANNER_PRIVATE_H_
+: <a class="el" href="lightmediascanner__private_8h.html#c9783e2105f145aa71f541e0825707ed">lightmediascanner_private.h</a>
+<li>_LIGHTMEDIASCANNER_UTILS_H_
+: <a class="el" href="lightmediascanner__utils_8h.html#8ad3460b8bb014878af2cdfd42fcf5c6">lightmediascanner_utils.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x61.html b/www/api/globals_0x61.html
new file mode 100644 (file)
index 0000000..407ad80
--- /dev/null
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html#index__"><span>_</span></a></li>
+      <li class="current"><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+      <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+      <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+      <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+      <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+      <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+      <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+      <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+      <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+      <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+      <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+      <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+      <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+<li>API
+: <a class="el" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#d8ce4efaa307683d3d763b37b4711c53">lightmediascanner_utils.h</a>
+, <a class="el" href="lightmediascanner__db_8h.html#d8ce4efaa307683d3d763b37b4711c53">lightmediascanner_db.h</a>
+, <a class="el" href="lightmediascanner__charset__conv_8h.html#d8ce4efaa307683d3d763b37b4711c53">lightmediascanner_charset_conv.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x63.html b/www/api/globals_0x63.html
new file mode 100644 (file)
index 0000000..e4f17e4
--- /dev/null
@@ -0,0 +1,114 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html#index__"><span>_</span></a></li>
+      <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+      <li class="current"><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+      <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+      <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+      <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+      <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+      <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+      <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+      <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+      <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+      <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+      <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+      <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>check_row_callback_t
+: <a class="el" href="lightmediascanner__private_8h.html#818aa1ae6bb03151823bbd9b56bd0801">lightmediascanner_private.h</a>
+<li>COMM_FINFO_FLAG_OUTDATED
+: <a class="el" href="lightmediascanner__check_8c.html#f8084f435d209d810eb33deaa35fab5e">lightmediascanner_check.c</a>
+<li>lms_charset_add()
+: <a class="el" href="lightmediascanner_8h.html#03afcd1e04665bdaebe73d9f6cc20553">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#g4fd56e209d415b27466274726cc7d59f">lightmediascanner.c</a>
+<li>lms_charset_conv()
+: <a class="el" href="group__LMS__CHARSET.html#gd843f59abac208048f13437534d589fc">lightmediascanner_charset_conv.h</a>
+, <a class="el" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lightmediascanner_charset_conv.c</a>
+<li>lms_charset_conv_add()
+: <a class="el" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lightmediascanner_charset_conv.c</a>
+, <a class="el" href="group__LMS__CHARSET.html#gfc1aad4c212b5fa1ce7280d2b7df3ef7">lightmediascanner_charset_conv.h</a>
+<li>lms_charset_conv_check()
+: <a class="el" href="group__LMS__CHARSET.html#gbc8903e67c3c7eefa902cbb2bd5e3338">lightmediascanner_charset_conv.h</a>
+, <a class="el" href="lightmediascanner__charset__conv_8c.html#f069b89e828896690fdd919e5b042c7d">lightmediascanner_charset_conv.c</a>
+<li>lms_charset_conv_del()
+: <a class="el" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">lightmediascanner_charset_conv.c</a>
+, <a class="el" href="group__LMS__CHARSET.html#gc364c502a4a4a64ea9f092a61074a90a">lightmediascanner_charset_conv.h</a>
+<li>lms_charset_conv_force()
+: <a class="el" href="lightmediascanner__charset__conv_8c.html#8ea844f16120ba4000b7b142192e91e4">lightmediascanner_charset_conv.c</a>
+, <a class="el" href="group__LMS__CHARSET.html#g9a610040a6380c745277effc5c4c9112">lightmediascanner_charset_conv.h</a>
+<li>lms_charset_conv_free()
+: <a class="el" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lightmediascanner_charset_conv.c</a>
+, <a class="el" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lightmediascanner_charset_conv.h</a>
+<li>lms_charset_conv_new()
+: <a class="el" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lightmediascanner_charset_conv.h</a>
+, <a class="el" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lightmediascanner_charset_conv.c</a>
+<li>lms_charset_conv_new_full()
+: <a class="el" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lightmediascanner_charset_conv.c</a>
+, <a class="el" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lightmediascanner_charset_conv.h</a>
+<li>lms_charset_conv_t
+: <a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lightmediascanner_charset_conv.h</a>
+<li>lms_charset_del()
+: <a class="el" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">lightmediascanner.c</a>
+, <a class="el" href="lightmediascanner_8h.html#35fc2de4828878b9dec07e8edda8a5e2">lightmediascanner.h</a>
+<li>lms_check()
+: <a class="el" href="lightmediascanner_8h.html#5b70063cf19648de70bb145404aa3d0b">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__check_8c.html#859492d896e816498edb471315efced1">lightmediascanner_check.c</a>
+<li>lms_check_single_process()
+: <a class="el" href="lightmediascanner__check_8c.html#a56ce530328493e110054aa1eabf66c2">lightmediascanner_check.c</a>
+, <a class="el" href="lightmediascanner_8h.html#bfd6888e606654c585e41aa946637432">lightmediascanner.h</a>
+<li>lms_close_pipes()
+: <a class="el" href="lightmediascanner__process_8c.html#6b68b00b80a98a178c7d69b962267a11">lightmediascanner_process.c</a>
+, <a class="el" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lightmediascanner_private.h</a>
+<li>lms_create_pipes()
+: <a class="el" href="lightmediascanner__process_8c.html#c2e1320b9770e0f522451b13f82efc2b">lightmediascanner_process.c</a>
+, <a class="el" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lightmediascanner_private.h</a>
+<li>lms_create_slave()
+: <a class="el" href="lightmediascanner__process_8c.html#e92fe8fe90d93d5ad9a42387a4b2fc6e">lightmediascanner_process.c</a>
+, <a class="el" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lightmediascanner_private.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x64.html b/www/api/globals_0x64.html
new file mode 100644 (file)
index 0000000..b431cf6
--- /dev/null
@@ -0,0 +1,227 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html#index__"><span>_</span></a></li>
+      <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+      <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+      <li class="current"><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+      <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+      <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+      <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+      <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+      <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+      <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+      <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+      <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+      <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+      <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
+<li>DEFAULT_COMMIT_INTERVAL
+: <a class="el" href="lightmediascanner_8c.html#6d0480dc76aba4a2291d79ac2466fc59">lightmediascanner.c</a>
+<li>DEFAULT_SLAVE_TIMEOUT
+: <a class="el" href="lightmediascanner_8c.html#c2843894cca63ec0089c381e69d1d81a">lightmediascanner.c</a>
+<li>lms_db_audio_add()
+: <a class="el" href="lightmediascanner__db__audio_8c.html#334b8c49f8dbf76024ee6b1d69f56c8c">lightmediascanner_db_audio.c</a>
+, <a class="el" href="group__LMS__DB.html#g9b83f734ec4905778dec5494f39b7397">lightmediascanner_db.h</a>
+<li>lms_db_audio_free()
+: <a class="el" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lightmediascanner_db_audio.c</a>
+, <a class="el" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lightmediascanner_db.h</a>
+<li>lms_db_audio_new()
+: <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lightmediascanner_db_audio.c</a>
+<li>lms_db_audio_start()
+: <a class="el" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lightmediascanner_db_audio.c</a>
+, <a class="el" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lightmediascanner_db.h</a>
+<li>lms_db_audio_t
+: <a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lightmediascanner_db.h</a>
+<li>lms_db_begin_transaction()
+: <a class="el" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#3a7256cb653542bbf563feeb2aa2d0ea">lightmediascanner_db_private.h</a>
+<li>lms_db_bind_blob()
+: <a class="el" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#7fd514b582578c18a25cdbf6c561243c">lightmediascanner_db_private.h</a>
+<li>lms_db_bind_double()
+: <a class="el" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#9e78297037179998924354e73ca69349">lightmediascanner_db_private.h</a>
+<li>lms_db_bind_int()
+: <a class="el" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#37815f859116b46089bea4ba84bb23d2">lightmediascanner_db_private.h</a>
+<li>lms_db_bind_int64()
+: <a class="el" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#bbb18d7cc44f7e363c0f240849d72c31">lightmediascanner_db_private.h</a>
+<li>lms_db_bind_int64_or_null()
+: <a class="el" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#cd7006f0271b9a47937dc2d2ae5480fe">lightmediascanner_db_private.h</a>
+<li>lms_db_bind_text()
+: <a class="el" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#14d56e02624ad6130bc59ae9bb950ac3">lightmediascanner_db_private.h</a>
+<li>lms_db_cache_add()
+: <a class="el" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#f2c9e9154fff8b335c4fd5693fe45aa6">lightmediascanner_db_private.h</a>
+<li>lms_db_cache_del()
+: <a class="el" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#e3e18958c74ba988c2bfdf77a3793ceb">lightmediascanner_db_private.h</a>
+<li>lms_db_cache_get()
+: <a class="el" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#ec1ff2c5b629374611336d56871a8c0b">lightmediascanner_db_private.h</a>
+<li>lms_db_compile_stmt()
+: <a class="el" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#6301bd096100f8adf24d2caff3aa0b75">lightmediascanner_db_private.h</a>
+<li>lms_db_compile_stmt_begin_transaction()
+: <a class="el" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#073c254ca7b4d3f42e1be1854bcc42a3">lightmediascanner_db_private.h</a>
+<li>lms_db_compile_stmt_delete_file_info()
+: <a class="el" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#76941bdbbdb711fff821343e91c2cd97">lightmediascanner_db_private.h</a>
+<li>lms_db_compile_stmt_end_transaction()
+: <a class="el" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#09feca4fbfde33d5647cdd5cc2de6500">lightmediascanner_db_private.h</a>
+<li>lms_db_compile_stmt_get_file_info()
+: <a class="el" href="lightmediascanner__db__common_8c.html#b00a624bc01da9b796f7bc6e1d507cf8">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#327d54a6dac083e356fd609298a0cbd5">lightmediascanner_db_private.h</a>
+<li>lms_db_compile_stmt_get_files()
+: <a class="el" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#1cc8a80961a0febdd099a028f3da9c30">lightmediascanner_db_private.h</a>
+<li>lms_db_compile_stmt_insert_file_info()
+: <a class="el" href="lightmediascanner__db__common_8c.html#9a5886e755eb428ac811956144eee0dc">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#bf21f88ddbe28a8290d0df32af0f079c">lightmediascanner_db_private.h</a>
+<li>lms_db_compile_stmt_set_file_dtime()
+: <a class="el" href="lightmediascanner__db__common_8c.html#1b6950ca9e548670a4cb7fd0ec5220a8">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#08c34b5b1b6e927a696ff0ce66562f54">lightmediascanner_db_private.h</a>
+<li>lms_db_compile_stmt_update_file_info()
+: <a class="el" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#69eb9d9058d9432f7658f9adffb79ed6">lightmediascanner_db_private.h</a>
+<li>lms_db_create_core_tables_if_required()
+: <a class="el" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#13ca09c885535a2968e707120e935268">lightmediascanner_db_private.h</a>
+<li>lms_db_create_trigger_if_not_exists()
+: <a class="el" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#f47d604dd4e11f81be1ad045ee723789">lightmediascanner_db_private.h</a>
+<li>lms_db_delete_file_info()
+: <a class="el" href="lightmediascanner__db__private_8h.html#ec17baec1e001f67334b0265d465fb50">lightmediascanner_db_private.h</a>
+, <a class="el" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lightmediascanner_db_common.c</a>
+<li>lms_db_end_transaction()
+: <a class="el" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#8ee7bfba83958b80f717a6ccbad2a84c">lightmediascanner_db_private.h</a>
+<li>lms_db_finalize_stmt()
+: <a class="el" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#2660f629fbdf3d4144a6143fee837a27">lightmediascanner_db_private.h</a>
+<li>lms_db_get_file_info()
+: <a class="el" href="lightmediascanner__db__private_8h.html#e1df123e8d894a49f740ec6429af8159">lightmediascanner_db_private.h</a>
+, <a class="el" href="lightmediascanner__db__common_8c.html#c0b7cf0b2eb0f55fbf8a4103bc9569d1">lightmediascanner_db_common.c</a>
+<li>lms_db_get_files()
+: <a class="el" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#617b14b976ba1cde9fe639800f2eae71">lightmediascanner_db_private.h</a>
+<li>lms_db_image_add()
+: <a class="el" href="lightmediascanner__db__image_8c.html#f23fcc3d62a0f6592e14eaf1dc9b5833">lightmediascanner_db_image.c</a>
+, <a class="el" href="group__LMS__DB.html#gbf78dd3b90caa31e8901369211501200">lightmediascanner_db.h</a>
+<li>lms_db_image_free()
+: <a class="el" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lightmediascanner_db_image.c</a>
+<li>lms_db_image_new()
+: <a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lightmediascanner_db_image.c</a>
+<li>lms_db_image_start()
+: <a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lightmediascanner_db_image.c</a>
+<li>lms_db_image_t
+: <a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lightmediascanner_db.h</a>
+<li>lms_db_insert_file_info()
+: <a class="el" href="lightmediascanner__db__private_8h.html#9353bf3cfbe2c0045023658597b0cf1d">lightmediascanner_db_private.h</a>
+, <a class="el" href="lightmediascanner__db__common_8c.html#e529ad5c4478d53685c65ec69dc5b1f4">lightmediascanner_db_common.c</a>
+<li>lms_db_playlist_add()
+: <a class="el" href="lightmediascanner__db__playlist_8c.html#4fe309efb9c2c24b6e2f77fffca81ee4">lightmediascanner_db_playlist.c</a>
+, <a class="el" href="group__LMS__DB.html#g8864e532609191f07737c1d23c1bc65f">lightmediascanner_db.h</a>
+<li>lms_db_playlist_free()
+: <a class="el" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lightmediascanner_db_playlist.c</a>
+<li>lms_db_playlist_new()
+: <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lightmediascanner_db_playlist.c</a>
+, <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lightmediascanner_db.h</a>
+<li>lms_db_playlist_start()
+: <a class="el" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lightmediascanner_db_playlist.c</a>
+, <a class="el" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lightmediascanner_db.h</a>
+<li>lms_db_playlist_t
+: <a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lightmediascanner_db.h</a>
+<li>lms_db_reset_stmt()
+: <a class="el" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#ee78f418f0f3c9ead3023b1453c63556">lightmediascanner_db_private.h</a>
+<li>lms_db_set_file_dtime()
+: <a class="el" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#0fa3bfe1fa3a01a4dd231b6f818122cb">lightmediascanner_db_private.h</a>
+<li>lms_db_table_update()
+: <a class="el" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#3dcf825514196befd0a4575e4afd0b58">lightmediascanner_db_private.h</a>
+<li>lms_db_table_update_if_required()
+: <a class="el" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#455c0e5d62094b01fc935c5db8f07352">lightmediascanner_db_private.h</a>
+<li>lms_db_table_updater_t
+: <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lightmediascanner_db_private.h</a>
+<li>lms_db_table_version_get()
+: <a class="el" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#23cf7fff49641b39c017bdd076b112a7">lightmediascanner_db_private.h</a>
+<li>lms_db_table_version_set()
+: <a class="el" href="lightmediascanner__db__private_8h.html#1c57f68c64069575a36252816929e335">lightmediascanner_db_private.h</a>
+, <a class="el" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">lightmediascanner_db_common.c</a>
+<li>lms_db_update_file_info()
+: <a class="el" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#9cce62321be32274de720ec946473eeb">lightmediascanner_db_private.h</a>
+<li>lms_db_video_add()
+: <a class="el" href="lightmediascanner__db__video_8c.html#700adc9c25a70e5cd1d77812324b748e">lightmediascanner_db_video.c</a>
+, <a class="el" href="group__LMS__DB.html#gb07d1e7fe962486b6e9d00581e8aac19">lightmediascanner_db.h</a>
+<li>lms_db_video_free()
+: <a class="el" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lightmediascanner_db_video.c</a>
+, <a class="el" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lightmediascanner_db.h</a>
+<li>lms_db_video_new()
+: <a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lightmediascanner_db_video.c</a>
+, <a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lightmediascanner_db.h</a>
+<li>lms_db_video_start()
+: <a class="el" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lightmediascanner_db_video.c</a>
+<li>lms_db_video_t
+: <a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lightmediascanner_db.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x66.html b/www/api/globals_0x66.html
new file mode 100644 (file)
index 0000000..d98dfed
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html#index__"><span>_</span></a></li>
+      <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+      <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+      <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+      <li class="current"><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+      <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+      <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+      <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+      <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+      <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+      <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+      <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+      <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+      <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
+<li>lms_finish_slave()
+: <a class="el" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#9f980636d608c6af99477ba37e196050">lightmediascanner_process.c</a>
+<li>lms_free()
+: <a class="el" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lightmediascanner.c</a>
+<li>lms_free_callback_t
+: <a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lightmediascanner.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x67.html b/www/api/globals_0x67.html
new file mode 100644 (file)
index 0000000..560b8bf
--- /dev/null
@@ -0,0 +1,93 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html#index__"><span>_</span></a></li>
+      <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+      <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+      <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+      <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+      <li class="current"><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+      <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+      <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+      <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+      <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+      <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+      <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+      <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+      <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>GNUC_CONST
+: <a class="el" href="lightmediascanner_8h.html#ccce66c7f9844ae805b83bee1b9c32b5">lightmediascanner.h</a>
+<li>GNUC_MALLOC
+: <a class="el" href="lightmediascanner_8h.html#2213ea4dca0e242f957f63988caab768">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__charset__conv_8h.html#2213ea4dca0e242f957f63988caab768">lightmediascanner_charset_conv.h</a>
+<li>GNUC_NON_NULL
+: <a class="el" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__charset__conv_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_charset_conv.h</a>
+, <a class="el" href="lightmediascanner__db_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_db.h</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_utils.h</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_db_private.h</a>
+, <a class="el" href="lightmediascanner__private_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_private.h</a>
+<li>GNUC_NULL_TERMINATED
+: <a class="el" href="lightmediascanner_8h.html#3c631eb7d32b61d70bfc615ae54e5552">lightmediascanner.h</a>
+<li>GNUC_PURE
+: <a class="el" href="lightmediascanner_8h.html#7a9a21d60c8e567c8110c8e3069f8201">lightmediascanner.h</a>
+<li>GNUC_UNUSED
+: <a class="el" href="lightmediascanner_8h.html#80a4050221a914ea58d5799f13109ebb">lightmediascanner.h</a>
+<li>GNUC_WARN_UNUSED_RESULT
+: <a class="el" href="lightmediascanner_8h.html#34c563f40a0f86e597c51f1556669521">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__charset__conv_8h.html#34c563f40a0f86e597c51f1556669521">lightmediascanner_charset_conv.h</a>
+<li>lms_get_commit_interval()
+: <a class="el" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lightmediascanner.c</a>
+<li>lms_get_db_path()
+: <a class="el" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lightmediascanner.c</a>
+, <a class="el" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lightmediascanner.h</a>
+<li>lms_get_slave_timeout()
+: <a class="el" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lightmediascanner.c</a>
+, <a class="el" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lightmediascanner.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x69.html b/www/api/globals_0x69.html
new file mode 100644 (file)
index 0000000..0becf10
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html#index__"><span>_</span></a></li>
+      <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+      <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+      <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+      <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+      <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+      <li class="current"><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+      <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+      <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+      <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+      <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+      <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+      <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+      <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+<li>lms_is_processing()
+: <a class="el" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">lightmediascanner.c</a>
+, <a class="el" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">lightmediascanner.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x6c.html b/www/api/globals_0x6c.html
new file mode 100644 (file)
index 0000000..83cef54
--- /dev/null
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html#index__"><span>_</span></a></li>
+      <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+      <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+      <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+      <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+      <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+      <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+      <li class="current"><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+      <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+      <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+      <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+      <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+      <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+      <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+<li>LMS_ARRAY_SIZE
+: <a class="el" href="lightmediascanner__utils_8h.html#13a0622cfcc91eec261da4285621bdcc">lightmediascanner_utils.h</a>
+<li>LMS_PROGRESS_STATUS_DELETED
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_ERROR_COMM
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_ERROR_PARSE
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_KILLED
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_PROCESSED
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_SKIPPED
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d23704d4c093ecf32b2eba688a42908aa338c">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_UP_TO_DATE
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370204315e58ce4b7dfa6421b4d1556655d">lightmediascanner.h</a>
+<li>LMS_STATIC_STRING_SIZE
+: <a class="el" href="lightmediascanner__utils_8h.html#786c453d995be000d52360f327a6816b">lightmediascanner_utils.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x6e.html b/www/api/globals_0x6e.html
new file mode 100644 (file)
index 0000000..1269f03
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html#index__"><span>_</span></a></li>
+      <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+      <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+      <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+      <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+      <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+      <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+      <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+      <li class="current"><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+      <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+      <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+      <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+      <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+      <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
+<li>lms_new()
+: <a class="el" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">lightmediascanner.c</a>
+, <a class="el" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">lightmediascanner.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x70.html b/www/api/globals_0x70.html
new file mode 100644 (file)
index 0000000..3c9ce02
--- /dev/null
@@ -0,0 +1,133 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html#index__"><span>_</span></a></li>
+      <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+      <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+      <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+      <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+      <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+      <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+      <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+      <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+      <li class="current"><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+      <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+      <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+      <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+      <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+<li>lms_parser_add()
+: <a class="el" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">lightmediascanner.c</a>
+, <a class="el" href="lightmediascanner_8h.html#ce55a5c9cc767b96fa6f24b77bebc7c3">lightmediascanner.h</a>
+<li>lms_parser_del()
+: <a class="el" href="lightmediascanner_8h.html#5ba173b12c355bbdf7913bfff0ff6415">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#g1da5e5f834e0289ea49a0fbc2280feda">lightmediascanner.c</a>
+<li>lms_parser_del_int()
+: <a class="el" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lightmediascanner.c</a>
+, <a class="el" href="lightmediascanner__private_8h.html#239fc535d2f20f09eeec9df86aa6ef9b">lightmediascanner_private.h</a>
+<li>lms_parser_find_and_add()
+: <a class="el" href="lightmediascanner_8h.html#e48d0483903bbb9604d14b44f7c569d9">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">lightmediascanner.c</a>
+<li>lms_parser_info()
+: <a class="el" href="lightmediascanner_8c.html#0b95c1ed1a71c241bb887ee672f740d8">lightmediascanner.c</a>
+, <a class="el" href="lightmediascanner_8h.html#bda4586257139ef13260e3fe3bfd1b77">lightmediascanner.h</a>
+<li>lms_parser_info_find()
+: <a class="el" href="lightmediascanner_8c.html#66457cf4ec2ef4a50bd899f99e914650">lightmediascanner.c</a>
+, <a class="el" href="lightmediascanner_8h.html#85b153a95dafb48c419dc1419e323567">lightmediascanner.h</a>
+<li>lms_parser_info_free()
+: <a class="el" href="lightmediascanner_8c.html#508ef3c49f7f4729b9e5a5711b66bda1">lightmediascanner.c</a>
+, <a class="el" href="lightmediascanner_8h.html#f071ee2184c0d4d69c85cccd09e08b26">lightmediascanner.h</a>
+<li>lms_parsers_check_using()
+: <a class="el" href="lightmediascanner__process_8c.html#f2e95cea50ce24774d2f5ed7d8c8f41c">lightmediascanner_process.c</a>
+, <a class="el" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lightmediascanner_private.h</a>
+<li>lms_parsers_finish()
+: <a class="el" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#d002464442b08826a1da920bdf4957b7">lightmediascanner_process.c</a>
+<li>lms_parsers_list()
+: <a class="el" href="lightmediascanner_8c.html#7e27ccbd0abfd5d112586a00fd424db9">lightmediascanner.c</a>
+, <a class="el" href="lightmediascanner_8h.html#ebe19263efa873f4629a18e77924bfaf">lightmediascanner.h</a>
+<li>lms_parsers_list_by_category()
+: <a class="el" href="lightmediascanner_8c.html#24f4c44982b286dc3ca451ca1acb6123">lightmediascanner.c</a>
+, <a class="el" href="lightmediascanner_8h.html#f6dfb5e9ed76e132ee7f45e7fe26415e">lightmediascanner.h</a>
+<li>lms_parsers_run()
+: <a class="el" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#4ab78dfbf29822d91472d18dd7424e77">lightmediascanner_process.c</a>
+<li>lms_parsers_setup()
+: <a class="el" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#c321bebfc5c24cbbac30031202c460e9">lightmediascanner_process.c</a>
+<li>lms_parsers_start()
+: <a class="el" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#6e02f78f026b2ad282184476dca13e45">lightmediascanner_process.c</a>
+<li>lms_plugin_close_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lightmediascanner_plugin.h</a>
+<li>lms_plugin_finish_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lightmediascanner_plugin.h</a>
+<li>lms_plugin_match_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">lightmediascanner_plugin.h</a>
+<li>lms_plugin_parse_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lightmediascanner_plugin.h</a>
+<li>lms_plugin_setup_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lightmediascanner_plugin.h</a>
+<li>lms_plugin_start_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lightmediascanner_plugin.h</a>
+<li>lms_plugin_t
+: <a class="el" href="lightmediascanner_8h.html#ccedd0cd6d535dcfee399957033074fd">lightmediascanner.h</a>
+<li>lms_process()
+: <a class="el" href="lightmediascanner_8h.html#7d2b81cfe07a8cce4c2bef705e7529f4">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#c2f07fb73717514237862c98dbf023b2">lightmediascanner_process.c</a>
+<li>lms_process_single_process()
+: <a class="el" href="lightmediascanner__process_8c.html#5db83cefb7a50bbecea9de26a6ef1c2c">lightmediascanner_process.c</a>
+, <a class="el" href="lightmediascanner_8h.html#c5eda23c23b2ea76f001ac994c2ba9e2">lightmediascanner.h</a>
+<li>lms_progress_callback_t
+: <a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lightmediascanner.h</a>
+<li>lms_progress_status_t
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lightmediascanner.h</a>
+<li>PATH_SIZE
+: <a class="el" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">lightmediascanner_private.h</a>
+<li>process_file_callback_t
+: <a class="el" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">lightmediascanner_private.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x72.html b/www/api/globals_0x72.html
new file mode 100644 (file)
index 0000000..52581ea
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html#index__"><span>_</span></a></li>
+      <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+      <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+      <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+      <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+      <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+      <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+      <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+      <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+      <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+      <li class="current"><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+      <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+      <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+      <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
+<li>lms_restart_slave()
+: <a class="el" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#9bf510645947b478dab39f633bbd35f3">lightmediascanner_process.c</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x73.html b/www/api/globals_0x73.html
new file mode 100644 (file)
index 0000000..11e2f8c
--- /dev/null
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html#index__"><span>_</span></a></li>
+      <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+      <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+      <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+      <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+      <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+      <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+      <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+      <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+      <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+      <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+      <li class="current"><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+      <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+      <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>lms_set_commit_interval()
+: <a class="el" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lightmediascanner.c</a>
+, <a class="el" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lightmediascanner.h</a>
+<li>lms_set_progress_callback()
+: <a class="el" href="lightmediascanner_8h.html#d2da241599f7f576670d64184f972c43">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner_8c.html#668e706f6d5eae3ba5e36ff4db2ae514">lightmediascanner.c</a>
+<li>lms_set_slave_timeout()
+: <a class="el" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lightmediascanner.c</a>
+, <a class="el" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lightmediascanner.h</a>
+<li>lms_stop_processing()
+: <a class="el" href="lightmediascanner_8h.html#30aa1e83907fc1049d2adccb28eef489">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#36d624baae0531c20e716c88a82e0aaf">lightmediascanner_process.c</a>
+<li>lms_string_size_strip_and_free()
+: <a class="el" href="lightmediascanner__utils_8c.html#9ed157dee5c16f4c62c5ae6e281580cf">lightmediascanner_utils.c</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#5a7e5da69500a12f447a77177dbb6e0d">lightmediascanner_utils.h</a>
+<li>lms_strstrip()
+: <a class="el" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">lightmediascanner_utils.c</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#281568969e526a7bdf687da4d1cc75ab">lightmediascanner_utils.h</a>
+<li>lms_strstrip_and_free()
+: <a class="el" href="lightmediascanner__utils_8c.html#45d15c8bfeddaef0d5b1d0bd9ecc0c79">lightmediascanner_utils.c</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#01cee33e2410ae7081905a4e06d890cc">lightmediascanner_utils.h</a>
+<li>sqlite3_clear_bindings()
+: <a class="el" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00">lightmediascanner_db_common.c</a>
+<li>sqlite3_prepare_v2()
+: <a class="el" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405">lightmediascanner_db_common.c</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x74.html b/www/api/globals_0x74.html
new file mode 100644 (file)
index 0000000..008ac24
--- /dev/null
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html#index__"><span>_</span></a></li>
+      <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+      <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+      <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+      <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+      <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+      <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+      <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+      <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+      <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+      <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+      <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+      <li class="current"><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+      <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
+<li>lms_t
+: <a class="el" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lightmediascanner.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x77.html b/www/api/globals_0x77.html
new file mode 100644 (file)
index 0000000..cd21458
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html#index__"><span>_</span></a></li>
+      <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+      <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+      <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+      <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+      <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+      <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+      <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+      <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+      <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+      <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+      <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+      <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+      <li class="current"><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+<p>
+<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
+<li>lms_which_extension()
+: <a class="el" href="lightmediascanner__utils_8c.html#71ee8b57cf7c5eba8ec0593e756d2529">lightmediascanner_utils.c</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#7dfc23066442e00fff5cbe77e6f1426e">lightmediascanner_utils.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_defs.html b/www/api/globals_defs.html
new file mode 100644 (file)
index 0000000..c5bf50a
--- /dev/null
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li class="current"><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="#index__"><span>_</span></a></li>
+      <li><a href="#index_a"><span>a</span></a></li>
+      <li><a href="#index_c"><span>c</span></a></li>
+      <li><a href="#index_d"><span>d</span></a></li>
+      <li><a href="#index_g"><span>g</span></a></li>
+      <li><a href="#index_l"><span>l</span></a></li>
+      <li><a href="#index_p"><span>p</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index__">- _ -</a></h3><ul>
+<li>_DB_T_UPDATE
+: <a class="el" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">lightmediascanner_db_audio.c</a>
+<li>_GNU_SOURCE
+: <a class="el" href="lightmediascanner__check_8c.html#369266c24eacffb87046522897a570d5">lightmediascanner_check.c</a>
+, <a class="el" href="lightmediascanner__process_8c.html#369266c24eacffb87046522897a570d5">lightmediascanner_process.c</a>
+<li>_LIGHTMEDIASCANNER_CHARSET_CONV_H_
+: <a class="el" href="lightmediascanner__charset__conv_8h.html#79f872f99949ecde4c1661e4b78b4c2b">lightmediascanner_charset_conv.h</a>
+<li>_LIGHTMEDIASCANNER_DB_H_
+: <a class="el" href="lightmediascanner__db_8h.html#5360af19a6df2e8b0d326344bb27e151">lightmediascanner_db.h</a>
+<li>_LIGHTMEDIASCANNER_DB_PRIVATE_H_
+: <a class="el" href="lightmediascanner__db__private_8h.html#97d5ed207ef5b72f4fba0cab38594bb7">lightmediascanner_db_private.h</a>
+<li>_LIGHTMEDIASCANNER_H_
+: <a class="el" href="lightmediascanner_8h.html#e97a674be7c85b0914a6acbafe994998">lightmediascanner.h</a>
+<li>_LIGHTMEDIASCANNER_PLUGIN_H_
+: <a class="el" href="lightmediascanner__plugin_8h.html#25abdf2375defcfc83bf95ef930fc739">lightmediascanner_plugin.h</a>
+<li>_LIGHTMEDIASCANNER_PRIVATE_H_
+: <a class="el" href="lightmediascanner__private_8h.html#c9783e2105f145aa71f541e0825707ed">lightmediascanner_private.h</a>
+<li>_LIGHTMEDIASCANNER_UTILS_H_
+: <a class="el" href="lightmediascanner__utils_8h.html#8ad3460b8bb014878af2cdfd42fcf5c6">lightmediascanner_utils.h</a>
+</ul>
+<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+<li>API
+: <a class="el" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#d8ce4efaa307683d3d763b37b4711c53">lightmediascanner_utils.h</a>
+, <a class="el" href="lightmediascanner__db_8h.html#d8ce4efaa307683d3d763b37b4711c53">lightmediascanner_db.h</a>
+, <a class="el" href="lightmediascanner__charset__conv_8h.html#d8ce4efaa307683d3d763b37b4711c53">lightmediascanner_charset_conv.h</a>
+</ul>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>COMM_FINFO_FLAG_OUTDATED
+: <a class="el" href="lightmediascanner__check_8c.html#f8084f435d209d810eb33deaa35fab5e">lightmediascanner_check.c</a>
+</ul>
+<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
+<li>DEFAULT_COMMIT_INTERVAL
+: <a class="el" href="lightmediascanner_8c.html#6d0480dc76aba4a2291d79ac2466fc59">lightmediascanner.c</a>
+<li>DEFAULT_SLAVE_TIMEOUT
+: <a class="el" href="lightmediascanner_8c.html#c2843894cca63ec0089c381e69d1d81a">lightmediascanner.c</a>
+</ul>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>GNUC_CONST
+: <a class="el" href="lightmediascanner_8h.html#ccce66c7f9844ae805b83bee1b9c32b5">lightmediascanner.h</a>
+<li>GNUC_MALLOC
+: <a class="el" href="lightmediascanner_8h.html#2213ea4dca0e242f957f63988caab768">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__charset__conv_8h.html#2213ea4dca0e242f957f63988caab768">lightmediascanner_charset_conv.h</a>
+<li>GNUC_NON_NULL
+: <a class="el" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__private_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_utils.h</a>
+, <a class="el" href="lightmediascanner__charset__conv_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_charset_conv.h</a>
+, <a class="el" href="lightmediascanner__db_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_db.h</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_db_private.h</a>
+<li>GNUC_NULL_TERMINATED
+: <a class="el" href="lightmediascanner_8h.html#3c631eb7d32b61d70bfc615ae54e5552">lightmediascanner.h</a>
+<li>GNUC_PURE
+: <a class="el" href="lightmediascanner_8h.html#7a9a21d60c8e567c8110c8e3069f8201">lightmediascanner.h</a>
+<li>GNUC_UNUSED
+: <a class="el" href="lightmediascanner_8h.html#80a4050221a914ea58d5799f13109ebb">lightmediascanner.h</a>
+<li>GNUC_WARN_UNUSED_RESULT
+: <a class="el" href="lightmediascanner__charset__conv_8h.html#34c563f40a0f86e597c51f1556669521">lightmediascanner_charset_conv.h</a>
+, <a class="el" href="lightmediascanner_8h.html#34c563f40a0f86e597c51f1556669521">lightmediascanner.h</a>
+</ul>
+<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+<li>LMS_ARRAY_SIZE
+: <a class="el" href="lightmediascanner__utils_8h.html#13a0622cfcc91eec261da4285621bdcc">lightmediascanner_utils.h</a>
+<li>LMS_STATIC_STRING_SIZE
+: <a class="el" href="lightmediascanner__utils_8h.html#786c453d995be000d52360f327a6816b">lightmediascanner_utils.h</a>
+</ul>
+<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+<li>PATH_SIZE
+: <a class="el" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">lightmediascanner_private.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_enum.html b/www/api/globals_enum.html
new file mode 100644 (file)
index 0000000..671a041
--- /dev/null
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li class="current"><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<ul>
+<li>lms_progress_status_t
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lightmediascanner.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_eval.html b/www/api/globals_eval.html
new file mode 100644 (file)
index 0000000..b6a94b9
--- /dev/null
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li class="current"><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<ul>
+<li>LMS_PROGRESS_STATUS_DELETED
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_ERROR_COMM
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_ERROR_PARSE
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_KILLED
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_PROCESSED
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_SKIPPED
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d23704d4c093ecf32b2eba688a42908aa338c">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_UP_TO_DATE
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370204315e58ce4b7dfa6421b4d1556655d">lightmediascanner.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_func.html b/www/api/globals_func.html
new file mode 100644 (file)
index 0000000..0d0b2dd
--- /dev/null
@@ -0,0 +1,372 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="#index_c"><span>c</span></a></li>
+      <li><a href="#index_d"><span>d</span></a></li>
+      <li><a href="#index_f"><span>f</span></a></li>
+      <li><a href="#index_g"><span>g</span></a></li>
+      <li><a href="#index_i"><span>i</span></a></li>
+      <li><a href="#index_n"><span>n</span></a></li>
+      <li><a href="#index_p"><span>p</span></a></li>
+      <li><a href="#index_r"><span>r</span></a></li>
+      <li><a href="#index_s"><span>s</span></a></li>
+      <li><a href="#index_w"><span>w</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>lms_charset_add()
+: <a class="el" href="group__LMS__API.html#g4fd56e209d415b27466274726cc7d59f">lightmediascanner.c</a>
+, <a class="el" href="lightmediascanner_8h.html#03afcd1e04665bdaebe73d9f6cc20553">lightmediascanner.h</a>
+<li>lms_charset_conv()
+: <a class="el" href="group__LMS__CHARSET.html#gd843f59abac208048f13437534d589fc">lightmediascanner_charset_conv.h</a>
+, <a class="el" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lightmediascanner_charset_conv.c</a>
+<li>lms_charset_conv_add()
+: <a class="el" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lightmediascanner_charset_conv.c</a>
+, <a class="el" href="group__LMS__CHARSET.html#gfc1aad4c212b5fa1ce7280d2b7df3ef7">lightmediascanner_charset_conv.h</a>
+<li>lms_charset_conv_check()
+: <a class="el" href="group__LMS__CHARSET.html#gbc8903e67c3c7eefa902cbb2bd5e3338">lightmediascanner_charset_conv.h</a>
+, <a class="el" href="lightmediascanner__charset__conv_8c.html#f069b89e828896690fdd919e5b042c7d">lightmediascanner_charset_conv.c</a>
+<li>lms_charset_conv_del()
+: <a class="el" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">lightmediascanner_charset_conv.c</a>
+, <a class="el" href="group__LMS__CHARSET.html#gc364c502a4a4a64ea9f092a61074a90a">lightmediascanner_charset_conv.h</a>
+<li>lms_charset_conv_force()
+: <a class="el" href="lightmediascanner__charset__conv_8c.html#8ea844f16120ba4000b7b142192e91e4">lightmediascanner_charset_conv.c</a>
+, <a class="el" href="group__LMS__CHARSET.html#g9a610040a6380c745277effc5c4c9112">lightmediascanner_charset_conv.h</a>
+<li>lms_charset_conv_free()
+: <a class="el" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lightmediascanner_charset_conv.c</a>
+, <a class="el" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lightmediascanner_charset_conv.h</a>
+<li>lms_charset_conv_new()
+: <a class="el" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lightmediascanner_charset_conv.h</a>
+, <a class="el" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lightmediascanner_charset_conv.c</a>
+<li>lms_charset_conv_new_full()
+: <a class="el" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lightmediascanner_charset_conv.c</a>
+, <a class="el" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lightmediascanner_charset_conv.h</a>
+<li>lms_charset_del()
+: <a class="el" href="lightmediascanner_8h.html#35fc2de4828878b9dec07e8edda8a5e2">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">lightmediascanner.c</a>
+<li>lms_check()
+: <a class="el" href="lightmediascanner_8h.html#5b70063cf19648de70bb145404aa3d0b">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__check_8c.html#859492d896e816498edb471315efced1">lightmediascanner_check.c</a>
+<li>lms_check_single_process()
+: <a class="el" href="lightmediascanner_8h.html#bfd6888e606654c585e41aa946637432">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__check_8c.html#a56ce530328493e110054aa1eabf66c2">lightmediascanner_check.c</a>
+<li>lms_close_pipes()
+: <a class="el" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#6b68b00b80a98a178c7d69b962267a11">lightmediascanner_process.c</a>
+<li>lms_create_pipes()
+: <a class="el" href="lightmediascanner__process_8c.html#c2e1320b9770e0f522451b13f82efc2b">lightmediascanner_process.c</a>
+, <a class="el" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lightmediascanner_private.h</a>
+<li>lms_create_slave()
+: <a class="el" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#e92fe8fe90d93d5ad9a42387a4b2fc6e">lightmediascanner_process.c</a>
+</ul>
+<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
+<li>lms_db_audio_add()
+: <a class="el" href="group__LMS__DB.html#g9b83f734ec4905778dec5494f39b7397">lightmediascanner_db.h</a>
+, <a class="el" href="lightmediascanner__db__audio_8c.html#334b8c49f8dbf76024ee6b1d69f56c8c">lightmediascanner_db_audio.c</a>
+<li>lms_db_audio_free()
+: <a class="el" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lightmediascanner_db_audio.c</a>
+, <a class="el" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lightmediascanner_db.h</a>
+<li>lms_db_audio_new()
+: <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lightmediascanner_db_audio.c</a>
+<li>lms_db_audio_start()
+: <a class="el" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lightmediascanner_db_audio.c</a>
+, <a class="el" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lightmediascanner_db.h</a>
+<li>lms_db_begin_transaction()
+: <a class="el" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#3a7256cb653542bbf563feeb2aa2d0ea">lightmediascanner_db_private.h</a>
+<li>lms_db_bind_blob()
+: <a class="el" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#7fd514b582578c18a25cdbf6c561243c">lightmediascanner_db_private.h</a>
+<li>lms_db_bind_double()
+: <a class="el" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#9e78297037179998924354e73ca69349">lightmediascanner_db_private.h</a>
+<li>lms_db_bind_int()
+: <a class="el" href="lightmediascanner__db__private_8h.html#37815f859116b46089bea4ba84bb23d2">lightmediascanner_db_private.h</a>
+, <a class="el" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lightmediascanner_db_common.c</a>
+<li>lms_db_bind_int64()
+: <a class="el" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#bbb18d7cc44f7e363c0f240849d72c31">lightmediascanner_db_private.h</a>
+<li>lms_db_bind_int64_or_null()
+: <a class="el" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#cd7006f0271b9a47937dc2d2ae5480fe">lightmediascanner_db_private.h</a>
+<li>lms_db_bind_text()
+: <a class="el" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#14d56e02624ad6130bc59ae9bb950ac3">lightmediascanner_db_private.h</a>
+<li>lms_db_cache_add()
+: <a class="el" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#f2c9e9154fff8b335c4fd5693fe45aa6">lightmediascanner_db_private.h</a>
+<li>lms_db_cache_del()
+: <a class="el" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#e3e18958c74ba988c2bfdf77a3793ceb">lightmediascanner_db_private.h</a>
+<li>lms_db_cache_get()
+: <a class="el" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#ec1ff2c5b629374611336d56871a8c0b">lightmediascanner_db_private.h</a>
+<li>lms_db_compile_stmt()
+: <a class="el" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#6301bd096100f8adf24d2caff3aa0b75">lightmediascanner_db_private.h</a>
+<li>lms_db_compile_stmt_begin_transaction()
+: <a class="el" href="lightmediascanner__db__private_8h.html#073c254ca7b4d3f42e1be1854bcc42a3">lightmediascanner_db_private.h</a>
+, <a class="el" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lightmediascanner_db_common.c</a>
+<li>lms_db_compile_stmt_delete_file_info()
+: <a class="el" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#76941bdbbdb711fff821343e91c2cd97">lightmediascanner_db_private.h</a>
+<li>lms_db_compile_stmt_end_transaction()
+: <a class="el" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#09feca4fbfde33d5647cdd5cc2de6500">lightmediascanner_db_private.h</a>
+<li>lms_db_compile_stmt_get_file_info()
+: <a class="el" href="lightmediascanner__db__common_8c.html#b00a624bc01da9b796f7bc6e1d507cf8">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#327d54a6dac083e356fd609298a0cbd5">lightmediascanner_db_private.h</a>
+<li>lms_db_compile_stmt_get_files()
+: <a class="el" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#1cc8a80961a0febdd099a028f3da9c30">lightmediascanner_db_private.h</a>
+<li>lms_db_compile_stmt_insert_file_info()
+: <a class="el" href="lightmediascanner__db__common_8c.html#9a5886e755eb428ac811956144eee0dc">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#bf21f88ddbe28a8290d0df32af0f079c">lightmediascanner_db_private.h</a>
+<li>lms_db_compile_stmt_set_file_dtime()
+: <a class="el" href="lightmediascanner__db__common_8c.html#1b6950ca9e548670a4cb7fd0ec5220a8">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#08c34b5b1b6e927a696ff0ce66562f54">lightmediascanner_db_private.h</a>
+<li>lms_db_compile_stmt_update_file_info()
+: <a class="el" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#69eb9d9058d9432f7658f9adffb79ed6">lightmediascanner_db_private.h</a>
+<li>lms_db_create_core_tables_if_required()
+: <a class="el" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#13ca09c885535a2968e707120e935268">lightmediascanner_db_private.h</a>
+<li>lms_db_create_trigger_if_not_exists()
+: <a class="el" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#f47d604dd4e11f81be1ad045ee723789">lightmediascanner_db_private.h</a>
+<li>lms_db_delete_file_info()
+: <a class="el" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#ec17baec1e001f67334b0265d465fb50">lightmediascanner_db_private.h</a>
+<li>lms_db_end_transaction()
+: <a class="el" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#8ee7bfba83958b80f717a6ccbad2a84c">lightmediascanner_db_private.h</a>
+<li>lms_db_finalize_stmt()
+: <a class="el" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#2660f629fbdf3d4144a6143fee837a27">lightmediascanner_db_private.h</a>
+<li>lms_db_get_file_info()
+: <a class="el" href="lightmediascanner__db__common_8c.html#c0b7cf0b2eb0f55fbf8a4103bc9569d1">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#e1df123e8d894a49f740ec6429af8159">lightmediascanner_db_private.h</a>
+<li>lms_db_get_files()
+: <a class="el" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#617b14b976ba1cde9fe639800f2eae71">lightmediascanner_db_private.h</a>
+<li>lms_db_image_add()
+: <a class="el" href="group__LMS__DB.html#gbf78dd3b90caa31e8901369211501200">lightmediascanner_db.h</a>
+, <a class="el" href="lightmediascanner__db__image_8c.html#f23fcc3d62a0f6592e14eaf1dc9b5833">lightmediascanner_db_image.c</a>
+<li>lms_db_image_free()
+: <a class="el" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lightmediascanner_db_image.c</a>
+, <a class="el" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lightmediascanner_db.h</a>
+<li>lms_db_image_new()
+: <a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lightmediascanner_db_image.c</a>
+<li>lms_db_image_start()
+: <a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lightmediascanner_db_image.c</a>
+, <a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lightmediascanner_db.h</a>
+<li>lms_db_insert_file_info()
+: <a class="el" href="lightmediascanner__db__common_8c.html#e529ad5c4478d53685c65ec69dc5b1f4">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#9353bf3cfbe2c0045023658597b0cf1d">lightmediascanner_db_private.h</a>
+<li>lms_db_playlist_add()
+: <a class="el" href="group__LMS__DB.html#g8864e532609191f07737c1d23c1bc65f">lightmediascanner_db.h</a>
+, <a class="el" href="lightmediascanner__db__playlist_8c.html#4fe309efb9c2c24b6e2f77fffca81ee4">lightmediascanner_db_playlist.c</a>
+<li>lms_db_playlist_free()
+: <a class="el" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lightmediascanner_db_playlist.c</a>
+, <a class="el" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lightmediascanner_db.h</a>
+<li>lms_db_playlist_new()
+: <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lightmediascanner_db_playlist.c</a>
+, <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lightmediascanner_db.h</a>
+<li>lms_db_playlist_start()
+: <a class="el" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lightmediascanner_db_playlist.c</a>
+<li>lms_db_reset_stmt()
+: <a class="el" href="lightmediascanner__db__private_8h.html#ee78f418f0f3c9ead3023b1453c63556">lightmediascanner_db_private.h</a>
+, <a class="el" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lightmediascanner_db_common.c</a>
+<li>lms_db_set_file_dtime()
+: <a class="el" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#0fa3bfe1fa3a01a4dd231b6f818122cb">lightmediascanner_db_private.h</a>
+<li>lms_db_table_update()
+: <a class="el" href="lightmediascanner__db__private_8h.html#3dcf825514196befd0a4575e4afd0b58">lightmediascanner_db_private.h</a>
+, <a class="el" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">lightmediascanner_db_common.c</a>
+<li>lms_db_table_update_if_required()
+: <a class="el" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#455c0e5d62094b01fc935c5db8f07352">lightmediascanner_db_private.h</a>
+<li>lms_db_table_version_get()
+: <a class="el" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#23cf7fff49641b39c017bdd076b112a7">lightmediascanner_db_private.h</a>
+<li>lms_db_table_version_set()
+: <a class="el" href="lightmediascanner__db__private_8h.html#1c57f68c64069575a36252816929e335">lightmediascanner_db_private.h</a>
+, <a class="el" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">lightmediascanner_db_common.c</a>
+<li>lms_db_update_file_info()
+: <a class="el" href="lightmediascanner__db__private_8h.html#9cce62321be32274de720ec946473eeb">lightmediascanner_db_private.h</a>
+, <a class="el" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lightmediascanner_db_common.c</a>
+<li>lms_db_video_add()
+: <a class="el" href="group__LMS__DB.html#gb07d1e7fe962486b6e9d00581e8aac19">lightmediascanner_db.h</a>
+, <a class="el" href="lightmediascanner__db__video_8c.html#700adc9c25a70e5cd1d77812324b748e">lightmediascanner_db_video.c</a>
+<li>lms_db_video_free()
+: <a class="el" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lightmediascanner_db_video.c</a>
+<li>lms_db_video_new()
+: <a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lightmediascanner_db_video.c</a>
+<li>lms_db_video_start()
+: <a class="el" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lightmediascanner_db_video.c</a>
+, <a class="el" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lightmediascanner_db.h</a>
+</ul>
+<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
+<li>lms_finish_slave()
+: <a class="el" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#9f980636d608c6af99477ba37e196050">lightmediascanner_process.c</a>
+<li>lms_free()
+: <a class="el" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lightmediascanner.c</a>
+, <a class="el" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lightmediascanner.h</a>
+</ul>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>lms_get_commit_interval()
+: <a class="el" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lightmediascanner.c</a>
+, <a class="el" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lightmediascanner.h</a>
+<li>lms_get_db_path()
+: <a class="el" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lightmediascanner.c</a>
+<li>lms_get_slave_timeout()
+: <a class="el" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lightmediascanner.c</a>
+</ul>
+<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+<li>lms_is_processing()
+: <a class="el" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">lightmediascanner.c</a>
+, <a class="el" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">lightmediascanner.h</a>
+</ul>
+<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
+<li>lms_new()
+: <a class="el" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">lightmediascanner.c</a>
+, <a class="el" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">lightmediascanner.h</a>
+</ul>
+<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+<li>lms_parser_add()
+: <a class="el" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">lightmediascanner.c</a>
+, <a class="el" href="lightmediascanner_8h.html#ce55a5c9cc767b96fa6f24b77bebc7c3">lightmediascanner.h</a>
+<li>lms_parser_del()
+: <a class="el" href="lightmediascanner_8h.html#5ba173b12c355bbdf7913bfff0ff6415">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#g1da5e5f834e0289ea49a0fbc2280feda">lightmediascanner.c</a>
+<li>lms_parser_del_int()
+: <a class="el" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lightmediascanner.c</a>
+, <a class="el" href="lightmediascanner__private_8h.html#239fc535d2f20f09eeec9df86aa6ef9b">lightmediascanner_private.h</a>
+<li>lms_parser_find_and_add()
+: <a class="el" href="lightmediascanner_8h.html#e48d0483903bbb9604d14b44f7c569d9">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">lightmediascanner.c</a>
+<li>lms_parser_info()
+: <a class="el" href="lightmediascanner_8c.html#0b95c1ed1a71c241bb887ee672f740d8">lightmediascanner.c</a>
+, <a class="el" href="lightmediascanner_8h.html#bda4586257139ef13260e3fe3bfd1b77">lightmediascanner.h</a>
+<li>lms_parser_info_find()
+: <a class="el" href="lightmediascanner_8c.html#66457cf4ec2ef4a50bd899f99e914650">lightmediascanner.c</a>
+, <a class="el" href="lightmediascanner_8h.html#85b153a95dafb48c419dc1419e323567">lightmediascanner.h</a>
+<li>lms_parser_info_free()
+: <a class="el" href="lightmediascanner_8c.html#508ef3c49f7f4729b9e5a5711b66bda1">lightmediascanner.c</a>
+, <a class="el" href="lightmediascanner_8h.html#f071ee2184c0d4d69c85cccd09e08b26">lightmediascanner.h</a>
+<li>lms_parsers_check_using()
+: <a class="el" href="lightmediascanner__process_8c.html#f2e95cea50ce24774d2f5ed7d8c8f41c">lightmediascanner_process.c</a>
+, <a class="el" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lightmediascanner_private.h</a>
+<li>lms_parsers_finish()
+: <a class="el" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#d002464442b08826a1da920bdf4957b7">lightmediascanner_process.c</a>
+<li>lms_parsers_list()
+: <a class="el" href="lightmediascanner_8c.html#7e27ccbd0abfd5d112586a00fd424db9">lightmediascanner.c</a>
+, <a class="el" href="lightmediascanner_8h.html#ebe19263efa873f4629a18e77924bfaf">lightmediascanner.h</a>
+<li>lms_parsers_list_by_category()
+: <a class="el" href="lightmediascanner_8c.html#24f4c44982b286dc3ca451ca1acb6123">lightmediascanner.c</a>
+, <a class="el" href="lightmediascanner_8h.html#f6dfb5e9ed76e132ee7f45e7fe26415e">lightmediascanner.h</a>
+<li>lms_parsers_run()
+: <a class="el" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#4ab78dfbf29822d91472d18dd7424e77">lightmediascanner_process.c</a>
+<li>lms_parsers_setup()
+: <a class="el" href="lightmediascanner__process_8c.html#c321bebfc5c24cbbac30031202c460e9">lightmediascanner_process.c</a>
+, <a class="el" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lightmediascanner_private.h</a>
+<li>lms_parsers_start()
+: <a class="el" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#6e02f78f026b2ad282184476dca13e45">lightmediascanner_process.c</a>
+<li>lms_process()
+: <a class="el" href="lightmediascanner__process_8c.html#c2f07fb73717514237862c98dbf023b2">lightmediascanner_process.c</a>
+, <a class="el" href="lightmediascanner_8h.html#7d2b81cfe07a8cce4c2bef705e7529f4">lightmediascanner.h</a>
+<li>lms_process_single_process()
+: <a class="el" href="lightmediascanner_8h.html#c5eda23c23b2ea76f001ac994c2ba9e2">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#5db83cefb7a50bbecea9de26a6ef1c2c">lightmediascanner_process.c</a>
+</ul>
+<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
+<li>lms_restart_slave()
+: <a class="el" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#9bf510645947b478dab39f633bbd35f3">lightmediascanner_process.c</a>
+</ul>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<li>lms_set_commit_interval()
+: <a class="el" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lightmediascanner.c</a>
+, <a class="el" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lightmediascanner.h</a>
+<li>lms_set_progress_callback()
+: <a class="el" href="lightmediascanner_8h.html#d2da241599f7f576670d64184f972c43">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner_8c.html#668e706f6d5eae3ba5e36ff4db2ae514">lightmediascanner.c</a>
+<li>lms_set_slave_timeout()
+: <a class="el" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lightmediascanner.c</a>
+, <a class="el" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lightmediascanner.h</a>
+<li>lms_stop_processing()
+: <a class="el" href="lightmediascanner_8h.html#30aa1e83907fc1049d2adccb28eef489">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#36d624baae0531c20e716c88a82e0aaf">lightmediascanner_process.c</a>
+<li>lms_string_size_strip_and_free()
+: <a class="el" href="lightmediascanner__utils_8c.html#9ed157dee5c16f4c62c5ae6e281580cf">lightmediascanner_utils.c</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#5a7e5da69500a12f447a77177dbb6e0d">lightmediascanner_utils.h</a>
+<li>lms_strstrip()
+: <a class="el" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">lightmediascanner_utils.c</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#281568969e526a7bdf687da4d1cc75ab">lightmediascanner_utils.h</a>
+<li>lms_strstrip_and_free()
+: <a class="el" href="lightmediascanner__utils_8c.html#45d15c8bfeddaef0d5b1d0bd9ecc0c79">lightmediascanner_utils.c</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#01cee33e2410ae7081905a4e06d890cc">lightmediascanner_utils.h</a>
+<li>sqlite3_clear_bindings()
+: <a class="el" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00">lightmediascanner_db_common.c</a>
+<li>sqlite3_prepare_v2()
+: <a class="el" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405">lightmediascanner_db_common.c</a>
+</ul>
+<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
+<li>lms_which_extension()
+: <a class="el" href="lightmediascanner__utils_8c.html#71ee8b57cf7c5eba8ec0593e756d2529">lightmediascanner_utils.c</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#7dfc23066442e00fff5cbe77e6f1426e">lightmediascanner_utils.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_type.html b/www/api/globals_type.html
new file mode 100644 (file)
index 0000000..650835f
--- /dev/null
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<ul>
+<li>check_row_callback_t
+: <a class="el" href="lightmediascanner__private_8h.html#818aa1ae6bb03151823bbd9b56bd0801">lightmediascanner_private.h</a>
+<li>lms_charset_conv_t
+: <a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lightmediascanner_charset_conv.h</a>
+<li>lms_db_audio_t
+: <a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lightmediascanner_db.h</a>
+<li>lms_db_image_t
+: <a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lightmediascanner_db.h</a>
+<li>lms_db_playlist_t
+: <a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lightmediascanner_db.h</a>
+<li>lms_db_video_t
+: <a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lightmediascanner_db.h</a>
+<li>lms_free_callback_t
+: <a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lightmediascanner.h</a>
+<li>lms_plugin_close_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lightmediascanner_plugin.h</a>
+<li>lms_plugin_finish_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lightmediascanner_plugin.h</a>
+<li>lms_plugin_match_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">lightmediascanner_plugin.h</a>
+<li>lms_plugin_parse_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lightmediascanner_plugin.h</a>
+<li>lms_plugin_setup_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lightmediascanner_plugin.h</a>
+<li>lms_plugin_start_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lightmediascanner_plugin.h</a>
+<li>lms_plugin_t
+: <a class="el" href="lightmediascanner_8h.html#ccedd0cd6d535dcfee399957033074fd">lightmediascanner.h</a>
+<li>lms_progress_callback_t
+: <a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lightmediascanner.h</a>
+<li>process_file_callback_t
+: <a class="el" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">lightmediascanner_private.h</a>
+<li>lms_t
+: <a class="el" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lightmediascanner.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_vars.html b/www/api/globals_vars.html
new file mode 100644 (file)
index 0000000..e6ede61
--- /dev/null
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li class="current"><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<ul>
+<li>lms_db_table_updater_t
+: <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lightmediascanner_db_private.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/graph_legend.dot b/www/api/graph_legend.dot
new file mode 100644 (file)
index 0000000..ec7b113
--- /dev/null
@@ -0,0 +1,23 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node9 [shape="box",label="Inherited",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",fillcolor="grey75",style="filled" fontcolor="black"];
+  Node10 -> Node9 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [shape="box",label="PublicBase",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPublicBase.html"];
+  Node11 -> Node10 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [shape="box",label="Truncated",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="red",URL="$classTruncated.html"];
+  Node13 -> Node9 [dir=back,color="darkgreen",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [shape="box",label="ProtectedBase",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classProtectedBase.html"];
+  Node14 -> Node9 [dir=back,color="firebrick4",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [shape="box",label="PrivateBase",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPrivateBase.html"];
+  Node15 -> Node9 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [shape="box",label="Undocumented",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="grey75"];
+  Node16 -> Node9 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [shape="box",label="Templ< int >",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+  Node17 -> Node16 [dir=back,color="orange",fontsize="10",style="dashed",label="< int >",fontname="FreeSans"];
+  Node17 [shape="box",label="Templ< T >",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+  Node18 -> Node9 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="m_usedClass",fontname="FreeSans"];
+  Node18 [shape="box",label="Used",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classUsed.html"];
+}
diff --git a/www/api/graph_legend.html b/www/api/graph_legend.html
new file mode 100644 (file)
index 0000000..50c1d77
--- /dev/null
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Graph Legend</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>Graph Legend</h1>This page explains how to interpret the graphs that are generated by doxygen.<p>
+Consider the following example: <div class="fragment"><pre class="fragment"><span class="comment">/*! Invisible class because of truncation */</span>
+<span class="keyword">class </span>Invisible { };
+<span class="comment"></span>
+<span class="comment">/*! Truncated class, inheritance relation is hidden */</span>
+<span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };
+
+<span class="comment">/* Class not documented with doxygen comments */</span>
+<span class="keyword">class </span>Undocumented { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using public inheritance */</span>
+<span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };
+<span class="comment"></span>
+<span class="comment">/*! A template class */</span>
+<span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using protected inheritance */</span>
+<span class="keyword">class </span>ProtectedBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using private inheritance */</span>
+<span class="keyword">class </span>PrivateBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is used by the Inherited class */</span>
+<span class="keyword">class </span>Used { };
+<span class="comment"></span>
+<span class="comment">/*! Super class that inherits a number of other classes */</span>
+<span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,
+                  <span class="keyword">protected</span> ProtectedBase,
+                  <span class="keyword">private</span> PrivateBase,
+                  <span class="keyword">public</span> Undocumented,
+                  <span class="keyword">public</span> Templ&lt;int&gt;
+{
+  <span class="keyword">private</span>:
+    Used *m_usedClass;
+};
+</pre></div> This will result in the following graph:<p>
+<center><div align="center">
+<img src="graph_legend.png" alt="graph_legend.png">
+</div>
+</center> <p>
+The boxes in the above graph have the following meaning: <ul>
+<li>
+A filled gray box represents the struct or class for which the graph is generated. </li>
+<li>
+A box with a black border denotes a documented struct or class. </li>
+<li>
+A box with a grey border denotes an undocumented struct or class. </li>
+<li>
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
+</ul>
+The arrows have the following meaning: <ul>
+<li>
+A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
+<li>
+A dark green arrow is used for protected inheritance. </li>
+<li>
+A dark red arrow is used for private inheritance. </li>
+<li>
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
+<li>
+A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/group__LMS__API.html b/www/api/group__LMS__API.html
new file mode 100644 (file)
index 0000000..7fe61a6
--- /dev/null
@@ -0,0 +1,573 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: User-API</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>User-API</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">lms_new</a> (const char *db_path)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lms_free</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__plugin.html">lms_plugin_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">lms_parser_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *so_path)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__plugin.html">lms_plugin_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">lms_parser_find_and_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g1da5e5f834e0289ea49a0fbc2280feda">lms_parser_del</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *handle)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">lms_is_processing</a> (const <a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lms_get_db_path</a> (const <a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lms_get_slave_timeout</a> (const <a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lms_set_slave_timeout</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, int ms)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lms_get_commit_interval</a> (const <a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lms_set_commit_interval</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, unsigned int transactions)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g4fd56e209d415b27466274726cc7d59f">lms_charset_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *charset)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">lms_charset_del</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *charset)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Functions for library users. <hr><h2>Function Documentation</h2>
+<a class="anchor" name="g4fd56e209d415b27466274726cc7d59f"></a><!-- doxytag: member="lightmediascanner.c::lms_charset_add" ref="g4fd56e209d415b27466274726cc7d59f" args="(lms_t *lms, const char *charset)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_charset_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>charset</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Register a new charset encoding to be used.<p>
+All database text strings are in UTF-8, so one needs to register new encodings in order to convert to it.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>charset</em>&nbsp;</td><td>charset name as understood by iconv_open(3).</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00496">496</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00079">lms::cs_conv</a>, and <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00145">lms_charset_conv_add()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="g0b427b8b60957e29a0e504c10c5356b0"></a><!-- doxytag: member="lightmediascanner.c::lms_charset_del" ref="g0b427b8b60957e29a0e504c10c5356b0" args="(lms_t *lms, const char *charset)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_charset_del           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>charset</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Forget about registered charset encoding.<p>
+All database text strings are in UTF-8, so one needs to register new encodings in order to convert to it.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>charset</em>&nbsp;</td><td>charset name as understood by iconv_open(3).</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00519">519</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00079">lms::cs_conv</a>, and <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00211">lms_charset_conv_del()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="gf15f3b0f7de2113155a360df989b7687"></a><!-- doxytag: member="lightmediascanner.c::lms_free" ref="gf15f3b0f7de2113155a360df989b7687" args="(lms_t *lms)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free existing Light Media Scanner instance.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00159">159</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00079">lms::cs_conv</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00084">lms::data</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00080">lms::db_path</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00085">lms::free_data</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00088">lms::is_processing</a>, <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00112">lms_charset_conv_free()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>, and <a class="el" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">lms::progress</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00634">lms_create_slave()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="g227ebe8cad9776908c1977c43ef62d9c"></a><!-- doxytag: member="lightmediascanner.c::lms_get_commit_interval" ref="g227ebe8cad9776908c1977c43ef62d9c" args="(const lms_t *lms)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned int lms_get_commit_interval           </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the number of files served between database transactions.<p>
+This is used as an optimization to database access: doing database commits take some time and can slow things down too much, so you can choose to just commit after some number of files are processed, this is the commit_interval.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>(unsigned int)-1 on error, value otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00449">449</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00087">lms::commit_interval</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="g4098d31de667a895095fc8d4d9bc10c0"></a><!-- doxytag: member="lightmediascanner.c::lms_get_db_path" ref="g4098d31de667a895095fc8d4d9bc10c0" args="(const lms_t *lms)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* lms_get_db_path           </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the database path given at creation time.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>path to database. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00385">385</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00080">lms::db_path</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="g973c6c7b66f4fdd6f4f776a36e742d33"></a><!-- doxytag: member="lightmediascanner.c::lms_get_slave_timeout" ref="g973c6c7b66f4fdd6f4f776a36e742d33" args="(const lms_t *lms)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_get_slave_timeout           </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the maximum amount of milliseconds the slave can take to serve one file.<p>
+If a slave takes more than this amount of milliseconds, it will be killed and the scanner will continue with the next file.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>-1 on error or time in milliseconds otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00407">407</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00081">lms::slave_timeout</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="g8c594bed751d504965b5cc0c7e93fb71"></a><!-- doxytag: member="lightmediascanner.c::lms_is_processing" ref="g8c594bed751d504965b5cc0c7e93fb71" args="(const lms_t *lms)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_is_processing           </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Checks if Light Media Scanner is being used in a processing operation lile <a class="el" href="lightmediascanner_8h.html#7d2b81cfe07a8cce4c2bef705e7529f4">lms_process()</a> or <a class="el" href="lightmediascanner_8h.html#5b70063cf19648de70bb145404aa3d0b">lms_check()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if it is processing, 0 if it's not, -1 on error. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00366">366</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00088">lms::is_processing</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="g982939bdd2aeb664b5cf7a50b67c1030"></a><!-- doxytag: member="lightmediascanner.c::lms_new" ref="g982939bdd2aeb664b5cf7a50b67c1030" args="(const char *db_path)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structlms.html">lms_t</a>* lms_new           </td>
+          <td>(</td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>db_path</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create new Light Media Scanner instance.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>db_path</em>&nbsp;</td><td>path to database file. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>allocated data on success or NULL on failure. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00121">121</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00087">lms::commit_interval</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00079">lms::cs_conv</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00080">lms::db_path</a>, <a class="el" href="lightmediascanner_8c-source.html#l00037">DEFAULT_COMMIT_INTERVAL</a>, <a class="el" href="lightmediascanner_8c-source.html#l00036">DEFAULT_SLAVE_TIMEOUT</a>, <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00112">lms_charset_conv_free()</a>, <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00101">lms_charset_conv_new()</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00081">lms::slave_timeout</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="g7b93a24e73af8b5d46b2507dd70ac588"></a><!-- doxytag: member="lightmediascanner.c::lms_parser_add" ref="g7b93a24e73af8b5d46b2507dd70ac588" args="(lms_t *lms, const char *so_path)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structlms__plugin.html">lms_plugin_t</a>* lms_parser_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>so_path</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add <a class="el" href="structparser.html">parser</a> plugin given it's shared object path.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>so_path</em>&nbsp;</td><td>path to shared object (usable by dlopen(3)).</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success the LMS handle to plugin is returned, NULL on error. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00221">221</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00088">lms::is_processing</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00071">parser::plugin</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00279">lms_parser_find_and_add()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="g1da5e5f834e0289ea49a0fbc2280feda"></a><!-- doxytag: member="lightmediascanner.c::lms_parser_del" ref="g1da5e5f834e0289ea49a0fbc2280feda" args="(lms_t *lms, lms_plugin_t *handle)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_parser_del           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structlms__plugin.html">lms_plugin_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>handle</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Delete previously added <a class="el" href="structparser.html">parser</a>, making it unavailable for future operations.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00334">334</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00088">lms::is_processing</a>, <a class="el" href="lightmediascanner_8c-source.html#l00294">lms_parser_del_int()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00071">parser::plugin</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="g74b81422ff46a46b4b0fc44e8709ecee"></a><!-- doxytag: member="lightmediascanner.c::lms_parser_find_and_add" ref="g74b81422ff46a46b4b0fc44e8709ecee" args="(lms_t *lms, const char *name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structlms__plugin.html">lms_plugin_t</a>* lms_parser_find_and_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add <a class="el" href="structparser.html">parser</a> plugin given it's name.<p>
+This will look at default plugin path by the file named <code>name</code> (plus the required shared object extension).<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>plugin name.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success the LMS handle to plugin is returned, NULL on error. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00279">279</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner_8c-source.html#l00221">lms_parser_add()</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00073">parser::so_path</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="ge81a028f08139e64e97ac191bd899b32"></a><!-- doxytag: member="lightmediascanner.c::lms_set_commit_interval" ref="ge81a028f08139e64e97ac191bd899b32" args="(lms_t *lms, unsigned int transactions)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void lms_set_commit_interval           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>transactions</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the number of files served between database transactions.<p>
+This is used as an optimization to database access: doing database commits take some time and can slow things down too much, so you can choose to just commit after <code>transactions</code> files are processed.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>transactions</em>&nbsp;</td><td>number of files (transactions) to process between commits. </td></tr>
+  </table>
+</dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00472">472</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00087">lms::commit_interval</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="g68ac6273965bdeb25795dd4c50777b4e"></a><!-- doxytag: member="lightmediascanner.c::lms_set_slave_timeout" ref="g68ac6273965bdeb25795dd4c50777b4e" args="(lms_t *lms, int ms)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void lms_set_slave_timeout           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>ms</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the maximum amount of milliseconds the slave can take to serve one file.<p>
+If a slave takes more than this amount of milliseconds, it will be killed and the scanner will continue with the next file.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>ms</em>&nbsp;</td><td>time in milliseconds. </td></tr>
+  </table>
+</dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00427">427</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00081">lms::slave_timeout</a>.</p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.dot b/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.dot
new file mode 100644 (file)
index 0000000..60921e7
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_charset_del",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_charset_conv_del",height=0.2,width=0.4,color="black",URL="$lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4"];
+}
diff --git a/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.md5 b/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.md5
new file mode 100644 (file)
index 0000000..39ca080
--- /dev/null
@@ -0,0 +1 @@
+c1465f4100d586a92059ee1751b73a38
\ No newline at end of file
diff --git a/www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.dot b/www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.dot
new file mode 100644 (file)
index 0000000..ff79ced
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_parser_del",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_parser_del_int",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf"];
+}
diff --git a/www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.md5 b/www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.md5
new file mode 100644 (file)
index 0000000..63d6717
--- /dev/null
@@ -0,0 +1 @@
+d49bba44f04377201db3233e34967efb
\ No newline at end of file
diff --git a/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.dot b/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.dot
new file mode 100644 (file)
index 0000000..2c28c97
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_charset_add",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_charset_conv_add",height=0.2,width=0.4,color="black",URL="$lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000"];
+}
diff --git a/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.md5 b/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.md5
new file mode 100644 (file)
index 0000000..9fdeea6
--- /dev/null
@@ -0,0 +1 @@
+6af54acd6fbd829ab48fcc7e7bc2509f
\ No newline at end of file
diff --git a/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.dot b/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.dot
new file mode 100644 (file)
index 0000000..536e130
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_parser_find_and_add",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_parser_add",height=0.2,width=0.4,color="black",URL="$group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588"];
+}
diff --git a/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.md5 b/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.md5
new file mode 100644 (file)
index 0000000..2e15561
--- /dev/null
@@ -0,0 +1 @@
+53a4009f3dbd67da95e7f946557a359d
\ No newline at end of file
diff --git a/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.dot b/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.dot
new file mode 100644 (file)
index 0000000..61beb66
--- /dev/null
@@ -0,0 +1,14 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_new",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_charset_conv_free",height=0.2,width=0.4,color="black",URL="$group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_charset_conv_new",height=0.2,width=0.4,color="black",URL="$group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lms_charset_conv_new_full",height=0.2,width=0.4,color="black",URL="$group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15"];
+}
diff --git a/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.md5 b/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.md5
new file mode 100644 (file)
index 0000000..56d802e
--- /dev/null
@@ -0,0 +1 @@
+fc857f49d3593baad7e87ec77fe52d8f
\ No newline at end of file
diff --git a/www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.dot b/www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.dot
new file mode 100644 (file)
index 0000000..2a41402
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_free",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_charset_conv_free",height=0.2,width=0.4,color="black",URL="$group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091"];
+}
diff --git a/www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.md5 b/www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.md5
new file mode 100644 (file)
index 0000000..8ebd56a
--- /dev/null
@@ -0,0 +1 @@
+f5f810d9e9a7f974992ac9e9d9a05153
\ No newline at end of file
diff --git a/www/api/group__LMS__CHARSET.html b/www/api/group__LMS__CHARSET.html
new file mode 100644 (file)
index 0000000..c2ea7a8
--- /dev/null
@@ -0,0 +1,332 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Charset Conversion</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>Charset Conversion</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_charset_conv&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lms_charset_conv_new_full</a> (int use_check, int use_fallback) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lms_charset_conv_new</a> (void) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lms_charset_conv_free</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#gfc1aad4c212b5fa1ce7280d2b7df3ef7">lms_charset_conv_add</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *charset) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#gc364c502a4a4a64ea9f092a61074a90a">lms_charset_conv_del</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *charset) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#gd843f59abac208048f13437534d589fc">lms_charset_conv</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, char **p_str, unsigned int *p_len) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g9a610040a6380c745277effc5c4c9112">lms_charset_conv_force</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, char **p_str, unsigned int *p_len) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int API <br class="typebreak">
+int API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#gbc8903e67c3c7eefa902cbb2bd5e3338">lms_charset_conv_check</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *str, unsigned int len) GNUC_NON_NULL(1</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Utilities to convert strings to UTF-8, the charset used in database. <hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="g50e57a19bb3d062fe7eea437a8b8e949"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv_t" ref="g50e57a19bb3d062fe7eea437a8b8e949" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct lms_charset_conv <a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00072">72</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.</p>
+
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="gd843f59abac208048f13437534d589fc"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv" ref="gd843f59abac208048f13437534d589fc" args="(lms_charset_conv_t *lcc, char **p_str, unsigned int *p_len) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int API int API int lms_charset_conv           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char **&nbsp;</td>
+          <td class="paramname"> <em>p_str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int *&nbsp;</td>
+          <td class="paramname"> <em>p_len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="gfc1aad4c212b5fa1ce7280d2b7df3ef7"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv_add" ref="gfc1aad4c212b5fa1ce7280d2b7df3ef7" args="(lms_charset_conv_t *lcc, const char *charset) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_charset_conv_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>charset</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="gbc8903e67c3c7eefa902cbb2bd5e3338"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv_check" ref="gbc8903e67c3c7eefa902cbb2bd5e3338" args="(lms_charset_conv_t *lcc, const char *str, unsigned int len) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int API int API int API int API int lms_charset_conv_check           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="gc364c502a4a4a64ea9f092a61074a90a"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv_del" ref="gc364c502a4a4a64ea9f092a61074a90a" args="(lms_charset_conv_t *lcc, const char *charset) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int API int lms_charset_conv_del           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>charset</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="g9a610040a6380c745277effc5c4c9112"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv_force" ref="g9a610040a6380c745277effc5c4c9112" args="(lms_charset_conv_t *lcc, char **p_str, unsigned int *p_len) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int API int API int API int lms_charset_conv_force           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char **&nbsp;</td>
+          <td class="paramname"> <em>p_str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int *&nbsp;</td>
+          <td class="paramname"> <em>p_len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="g960ce31bca428212abdd60c12b878091"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv_free" ref="g960ce31bca428212abdd60c12b878091" args="(lms_charset_conv_t *lcc) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API void lms_charset_conv_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free existing charset conversion tool.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>lcc</em>&nbsp;</td><td>existing Light Media Scanner charset conversion. </td></tr>
+  </table>
+</dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00112">112</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00159">lms_free()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00121">lms_new()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="g0120c222a55e6d7d9bb24300300561ab"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv_new" ref="g0120c222a55e6d7d9bb24300300561ab" args="(void) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a>* lms_charset_conv_new           </td>
+          <td>(</td>
+          <td class="paramtype">void&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a new charset conversion tool.<p>
+Conversion tool will try to convert provided strings to UTF-8, just need to register known charsets with <a class="el" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lms_charset_conv_add()</a> and then call <a class="el" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv()</a>.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>newly allocated conversion tool or NULL on error. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00101">101</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00047">lms_charset_conv_new_full()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00121">lms_new()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="g893421821eacaa0fd2020c872361af15"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv_new_full" ref="g893421821eacaa0fd2020c872361af15" args="(int use_check, int use_fallback) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a>* lms_charset_conv_new_full           </td>
+          <td>(</td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>use_check</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>use_fallback</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a new charset conversion tool controlling its behavior.<p>
+Conversion tool will try to convert provided strings to UTF-8, just need to register known charsets with <a class="el" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lms_charset_conv_add()</a> and then call <a class="el" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv()</a>.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>newly allocated conversion tool or NULL on error. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00047">47</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00101">lms_charset_conv_new()</a>.</p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/group__LMS__CHARSET_g0120c222a55e6d7d9bb24300300561ab_cgraph.dot b/www/api/group__LMS__CHARSET_g0120c222a55e6d7d9bb24300300561ab_cgraph.dot
new file mode 100644 (file)
index 0000000..eceb725
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_charset_conv_new",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_charset_conv_new_full",height=0.2,width=0.4,color="black",URL="$group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15"];
+}
diff --git a/www/api/group__LMS__CHARSET_g0120c222a55e6d7d9bb24300300561ab_cgraph.md5 b/www/api/group__LMS__CHARSET_g0120c222a55e6d7d9bb24300300561ab_cgraph.md5
new file mode 100644 (file)
index 0000000..f9798b8
--- /dev/null
@@ -0,0 +1 @@
+d41cafd4886e092014a73b3b2d2588a1
\ No newline at end of file
diff --git a/www/api/group__LMS__DB.html b/www/api/group__LMS__DB.html
new file mode 100644 (file)
index 0000000..1219032
--- /dev/null
@@ -0,0 +1,743 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: DataBase-API</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>DataBase-API</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__gps__info.html">lms_gps_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html">lms_image_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html">lms_audio_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__video__info.html">lms_video_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__playlist__info.html">lms_playlist_info</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_db_image&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_db_audio&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_db_video&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_db_playlist&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lms_db_image_start</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lms_db_image_free</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gbf78dd3b90caa31e8901369211501200">lms_db_image_add</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi, struct <a class="el" href="structlms__image__info.html">lms_image_info</a> *info) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lms_db_audio_start</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lms_db_audio_free</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g9b83f734ec4905778dec5494f39b7397">lms_db_audio_add</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, struct <a class="el" href="structlms__audio__info.html">lms_audio_info</a> *info) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lms_db_video_start</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lms_db_video_free</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gb07d1e7fe962486b6e9d00581e8aac19">lms_db_video_add</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv, struct <a class="el" href="structlms__video__info.html">lms_video_info</a> *info) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lms_db_playlist_start</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lms_db_playlist_free</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g8864e532609191f07737c1d23c1bc65f">lms_db_playlist_add</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp, struct <a class="el" href="structlms__playlist__info.html">lms_playlist_info</a> *info) GNUC_NON_NULL(1</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Although Light Media Scanner uses SQLite3 and doesn't try to hide it from plugins/parsers, it does provide some utilities to make development easier and less error prone. <hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="ge13e30aaedfabd6f1eec256649d9bc98"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_audio_t" ref="ge13e30aaedfabd6f1eec256649d9bc98" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct lms_db_audio <a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00097">97</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="gf09fb00e8cf6c7d5f76f257ecdea11a6"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_image_t" ref="gf09fb00e8cf6c7d5f76f257ecdea11a6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct lms_db_image <a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00078">78</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="g9901260afad69e602336a4e567e386c3"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_playlist_t" ref="g9901260afad69e602336a4e567e386c3" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct lms_db_playlist <a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00125">125</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="gc2e0d2164f90e1ad3c78e05a4d341ec8"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_video_t" ref="gc2e0d2164f90e1ad3c78e05a4d341ec8" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct lms_db_video <a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00111">111</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g9b83f734ec4905778dec5494f39b7397"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_audio_add" ref="g9b83f734ec4905778dec5494f39b7397" args="(lms_db_audio_t *lda, struct lms_audio_info *info) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_audio_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lda</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__audio__info.html">lms_audio_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="g7560f9dab2ecd309290d200ea809375d"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_audio_free" ref="g7560f9dab2ecd309290d200ea809375d" args="(lms_db_audio_t *lda) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_audio_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lda</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free audio DB access tool.<p>
+Unreference and possible free resources allocated to access tool.<p>
+This is usually called from plugin's <b>finish()</b> callback.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>lda</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new()</a>.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00402">402</a> of file <a class="el" href="lightmediascanner__db__audio_8c-source.html">lightmediascanner_db_audio.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00437">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00113">lms_db_finalize_stmt()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00297">lms_db_audio_new()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="g09c4349148be1bdf02f069f8acb191ee"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_audio_new" ref="g09c4349148be1bdf02f069f8acb191ee" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a>* lms_db_audio_new           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create audio DB access tool.<p>
+Creates or get a reference to tools to access 'audios' table in an optimized and easy way.<p>
+This is usually called from plugin's <b>setup()</b> callback with the <code>db</code> got from <code>ctxt</code>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>db</em>&nbsp;</td><td>database connection.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>DB access tool handle. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00297">297</a> of file <a class="el" href="lightmediascanner__db__audio_8c-source.html">lightmediascanner_db_audio.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00402">lms_db_audio_free()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">lms_db_cache_add()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00462">lms_db_cache_get()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="g39731623b0bc5436858820a94487fdc1"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_audio_start" ref="g39731623b0bc5436858820a94487fdc1" args="(lms_db_audio_t *lda) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_audio_start           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lda</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Start audio DB access tool.<p>
+Compile SQL statements and other initialization functions.<p>
+This is usually called from plugin's <b>start()</b> callback.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>lda</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new()</a>.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00341">341</a> of file <a class="el" href="lightmediascanner__db__audio_8c-source.html">lightmediascanner_db_audio.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="gbf78dd3b90caa31e8901369211501200"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_image_add" ref="gbf78dd3b90caa31e8901369211501200" args="(lms_db_image_t *ldi, struct lms_image_info *info) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_image_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldi</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__image__info.html">lms_image_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="g5160a3f620f1ebd562b6ec0add0f65a6"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_image_free" ref="g5160a3f620f1ebd562b6ec0add0f65a6" args="(lms_db_image_t *ldi) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_image_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldi</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free image DB access tool.<p>
+Unreference and possible free resources allocated to access tool.<p>
+This is usually called from plugin's <b>finish()</b> callback.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>ldi</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new()</a>.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__image_8c-source.html#l00193">193</a> of file <a class="el" href="lightmediascanner__db__image_8c-source.html">lightmediascanner_db_image.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00437">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00113">lms_db_finalize_stmt()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__image_8c-source.html#l00117">lms_db_image_new()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="g3eac8dbebc0a847b63702e531872e2e7"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_image_new" ref="g3eac8dbebc0a847b63702e531872e2e7" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a>* lms_db_image_new           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create image DB access tool.<p>
+Creates or get a reference to tools to access 'images' table in an optimized and easy way.<p>
+This is usually called from plugin's <b>setup()</b> callback with the <code>db</code> got from <code>ctxt</code>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>db</em>&nbsp;</td><td>database connection.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>DB access tool handle. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__image_8c-source.html#l00117">117</a> of file <a class="el" href="lightmediascanner__db__image_8c-source.html">lightmediascanner_db_image.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">lms_db_cache_add()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00462">lms_db_cache_get()</a>, and <a class="el" href="lightmediascanner__db__image_8c-source.html#l00193">lms_db_image_free()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="g66dc91038d76fa96d9feaaa119e2ae56"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_image_start" ref="g66dc91038d76fa96d9feaaa119e2ae56" args="(lms_db_image_t *ldi) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_image_start           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldi</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Start image DB access tool.<p>
+Compile SQL statements and other initialization functions.<p>
+This is usually called from plugin's <b>start()</b> callback.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>ldi</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new()</a>.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__image_8c-source.html#l00161">161</a> of file <a class="el" href="lightmediascanner__db__image_8c-source.html">lightmediascanner_db_image.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="g8864e532609191f07737c1d23c1bc65f"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_playlist_add" ref="g8864e532609191f07737c1d23c1bc65f" args="(lms_db_playlist_t *ldp, struct lms_playlist_info *info) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_playlist_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldp</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__playlist__info.html">lms_playlist_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ge0e003fb6c8deccf8c15a7cedb88c789"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_playlist_free" ref="ge0e003fb6c8deccf8c15a7cedb88c789" args="(lms_db_playlist_t *ldp) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_playlist_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldp</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free playlist DB access tool.<p>
+Unreference and possible free resources allocated to access tool.<p>
+This is usually called from plugin's <b>finish()</b> callback.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>ldp</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new()</a>.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00185">185</a> of file <a class="el" href="lightmediascanner__db__playlist_8c-source.html">lightmediascanner_db_playlist.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00437">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00113">lms_db_finalize_stmt()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00111">lms_db_playlist_new()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="g379e3bbb3f4a87b1d389df587dec0875"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_playlist_new" ref="g379e3bbb3f4a87b1d389df587dec0875" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a>* lms_db_playlist_new           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create playlist DB access tool.<p>
+Creates or get a reference to tools to access 'playlists' table in an optimized and easy way.<p>
+This is usually called from plugin's <b>setup()</b> callback with the <code>db</code> got from <code>ctxt</code>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>db</em>&nbsp;</td><td>database connection.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>DB access tool handle. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00111">111</a> of file <a class="el" href="lightmediascanner__db__playlist_8c-source.html">lightmediascanner_db_playlist.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">lms_db_cache_add()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00462">lms_db_cache_get()</a>, and <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00185">lms_db_playlist_free()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="g9a0ba775eacd1abdc6bfd08c26bbd437"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_playlist_start" ref="g9a0ba775eacd1abdc6bfd08c26bbd437" args="(lms_db_playlist_t *ldp) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_playlist_start           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldp</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Start playlist DB access tool.<p>
+Compile SQL statements and other initialization functions.<p>
+This is usually called from plugin's <b>start()</b> callback.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>ldp</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new()</a>.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00155">155</a> of file <a class="el" href="lightmediascanner__db__playlist_8c-source.html">lightmediascanner_db_playlist.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="gb07d1e7fe962486b6e9d00581e8aac19"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_video_add" ref="gb07d1e7fe962486b6e9d00581e8aac19" args="(lms_db_video_t *ldv, struct lms_video_info *info) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_video_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldv</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__video__info.html">lms_video_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="g6be7c0922e76acc29542643424cfeac0"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_video_free" ref="g6be7c0922e76acc29542643424cfeac0" args="(lms_db_video_t *ldv) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_video_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldv</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free video DB access tool.<p>
+Unreference and possible free resources allocated to access tool.<p>
+This is usually called from plugin's <b>finish()</b> callback.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>ldv</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new()</a>.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__video_8c-source.html#l00197">197</a> of file <a class="el" href="lightmediascanner__db__video_8c-source.html">lightmediascanner_db_video.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00437">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00113">lms_db_finalize_stmt()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__video_8c-source.html#l00124">lms_db_video_new()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="ga206178e1f883c1bf7a3281f982109b2"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_video_new" ref="ga206178e1f883c1bf7a3281f982109b2" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a>* lms_db_video_new           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create video DB access tool.<p>
+Creates or get a reference to tools to access 'videos' table in an optimized and easy way.<p>
+This is usually called from plugin's <b>setup()</b> callback with the <code>db</code> got from <code>ctxt</code>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>db</em>&nbsp;</td><td>database connection.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>DB access tool handle. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__video_8c-source.html#l00124">124</a> of file <a class="el" href="lightmediascanner__db__video_8c-source.html">lightmediascanner_db_video.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">lms_db_cache_add()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00462">lms_db_cache_get()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00197">lms_db_video_free()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="g0ebc0dd37b1c9bcaf7741231a411ade2"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_video_start" ref="g0ebc0dd37b1c9bcaf7741231a411ade2" args="(lms_db_video_t *ldv) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_video_start           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldv</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Start video DB access tool.<p>
+Compile SQL statements and other initialization functions.<p>
+This is usually called from plugin's <b>start()</b> callback.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>ldv</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new()</a>.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__video_8c-source.html#l00168">168</a> of file <a class="el" href="lightmediascanner__db__video_8c-source.html">lightmediascanner_db_video.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.dot b/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.dot
new file mode 100644 (file)
index 0000000..aaa0f00
--- /dev/null
@@ -0,0 +1,18 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_audio_new",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_audio_free",height=0.2,width=0.4,color="black",URL="$group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_cache_del",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0"];
+  Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lms_db_finalize_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5"];
+  Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="lms_db_cache_add",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04"];
+  Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="lms_db_cache_get",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3"];
+}
diff --git a/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.md5 b/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.md5
new file mode 100644 (file)
index 0000000..039a149
--- /dev/null
@@ -0,0 +1 @@
+715dce3d4043b5df4f55c61584d34fe7
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.dot b/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.dot
new file mode 100644 (file)
index 0000000..c65a80a
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_video_start",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.md5 b/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.md5
new file mode 100644 (file)
index 0000000..c348c1f
--- /dev/null
@@ -0,0 +1 @@
+e99557883889bb3219c753f7d39b9ae4
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.dot b/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.dot
new file mode 100644 (file)
index 0000000..9c7a845
--- /dev/null
@@ -0,0 +1,18 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_playlist_new",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_cache_add",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_cache_get",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lms_db_playlist_free",height=0.2,width=0.4,color="black",URL="$group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="lms_db_cache_del",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0"];
+  Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="lms_db_finalize_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5"];
+}
diff --git a/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.md5 b/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.md5
new file mode 100644 (file)
index 0000000..4e166b4
--- /dev/null
@@ -0,0 +1 @@
+1ddd68957b34f9aa58441ba7b05d067c
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.dot b/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.dot
new file mode 100644 (file)
index 0000000..713ff34
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_audio_start",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.md5 b/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.md5
new file mode 100644 (file)
index 0000000..39ea28a
--- /dev/null
@@ -0,0 +1 @@
+b752c53558785d91f62cb6f45921ae44
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.dot b/www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.dot
new file mode 100644 (file)
index 0000000..1668ff0
--- /dev/null
@@ -0,0 +1,18 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_image_new",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_cache_add",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_cache_get",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lms_db_image_free",height=0.2,width=0.4,color="black",URL="$group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="lms_db_cache_del",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0"];
+  Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="lms_db_finalize_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5"];
+}
diff --git a/www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.md5 b/www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.md5
new file mode 100644 (file)
index 0000000..e1a0643
--- /dev/null
@@ -0,0 +1 @@
+ce7412eb280b1d449e9612b4fcf71726
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.dot b/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.dot
new file mode 100644 (file)
index 0000000..c7c20a9
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_image_free",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_cache_del",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_finalize_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5"];
+}
diff --git a/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.md5 b/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.md5
new file mode 100644 (file)
index 0000000..b6481d0
--- /dev/null
@@ -0,0 +1 @@
+96732aef82064dcb9942de2d0d86f632
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.dot b/www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.dot
new file mode 100644 (file)
index 0000000..b2aa0e0
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_image_start",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.md5 b/www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.md5
new file mode 100644 (file)
index 0000000..9500a47
--- /dev/null
@@ -0,0 +1 @@
+93723aa5812aaf52c1d8f179eb23d3f1
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.dot b/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.dot
new file mode 100644 (file)
index 0000000..3c140db
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_video_free",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_cache_del",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_finalize_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5"];
+}
diff --git a/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.md5 b/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.md5
new file mode 100644 (file)
index 0000000..5d9a75c
--- /dev/null
@@ -0,0 +1 @@
+e60e5af762901b1939a963e0b229c6ce
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.dot b/www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.dot
new file mode 100644 (file)
index 0000000..26ee980
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_audio_free",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_cache_del",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_finalize_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5"];
+}
diff --git a/www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.md5 b/www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.md5
new file mode 100644 (file)
index 0000000..9409344
--- /dev/null
@@ -0,0 +1 @@
+976f2cbc002d8eb854a9ea13afae4d20
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.dot b/www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.dot
new file mode 100644 (file)
index 0000000..d3228cd
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_playlist_start",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.md5 b/www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.md5
new file mode 100644 (file)
index 0000000..2d97e63
--- /dev/null
@@ -0,0 +1 @@
+63c4a37d581fb662f57ac25962d65f5b
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.dot b/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.dot
new file mode 100644 (file)
index 0000000..4b0d6f5
--- /dev/null
@@ -0,0 +1,18 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_video_new",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_cache_add",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_cache_get",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lms_db_video_free",height=0.2,width=0.4,color="black",URL="$group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="lms_db_cache_del",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0"];
+  Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="lms_db_finalize_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5"];
+}
diff --git a/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.md5 b/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.md5
new file mode 100644 (file)
index 0000000..dc60263
--- /dev/null
@@ -0,0 +1 @@
+9aa83f1a22652fba49ec7d366c8cc14f
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.dot b/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.dot
new file mode 100644 (file)
index 0000000..76657f4
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_playlist_free",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_cache_del",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_finalize_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5"];
+}
diff --git a/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.md5 b/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.md5
new file mode 100644 (file)
index 0000000..e8ebcca
--- /dev/null
@@ -0,0 +1 @@
+9d951140514630d96a26196cbeffe7bd
\ No newline at end of file
diff --git a/www/api/group__LMS__Plugin.html b/www/api/group__LMS__Plugin.html
new file mode 100644 (file)
index 0000000..d43fdcc
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Plugins-API</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>Plugins-API</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+Copyright (C) 2008 by ProFUSION 2007 by INdT<p>
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:barbieri@profusion.mobi">barbieri@profusion.mobi</a>&gt;</dd></dl>
+Plugins should implement the following call that provides required callbacks (see <a class="el" href="lightmediascanner__plugin_8h.html">lightmediascanner_plugin.h</a>):<p>
+<div class="fragment"><pre class="fragment">    <span class="keyword">struct </span><a class="code" href="structlms__plugin.html">lms_plugin</a> *lms_plugin_open(<span class="keywordtype">void</span>)
+    const struct <a class="code" href="structlms__plugin__info.html">lms_plugin_info</a> *<a class="code" href="structlms__plugin__info.html">lms_plugin_info</a>(<span class="keywordtype">void</span>)
+</pre></div><p>
+where:<p>
+<div class="fragment"><pre class="fragment">    <span class="keyword">struct </span><a class="code" href="structlms__plugin.html">lms_plugin</a> {
+       <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">name</a>;
+       <a class="code" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">lms_plugin_match_fn_t</a> <a class="code" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">match</a>;
+       <a class="code" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lms_plugin_parse_fn_t</a> <a class="code" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">parse</a>;
+       <a class="code" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lms_plugin_close_fn_t</a> <a class="code" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">close</a>;
+       <a class="code" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lms_plugin_setup_fn_t</a> <a class="code" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">setup</a>;
+       <a class="code" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lms_plugin_start_fn_t</a> <a class="code" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">start</a>;
+       <a class="code" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lms_plugin_finish_fn_t</a> <a class="code" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">finish</a>;
+    };
+
+
+    <span class="keyword">struct </span><a class="code" href="structlms__plugin__info.html">lms_plugin_info</a> {
+        <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__plugin__info.html#fad60ec7f8d34b2082b353a03e2cb836">name</a>;
+        <span class="keyword">const</span> <span class="keywordtype">char</span> *category;
+        <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__plugin__info.html#2e1df9478dd1f9dc62e81e208a2ebd3e">description</a>;
+        <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__plugin__info.html#032d3fd2490ad7907e1ea27abad59915">version</a>;
+        <span class="keyword">const</span> <span class="keywordtype">char</span> *author;
+        <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__plugin__info.html#8f5826185c7cb3a4155fca8683b817e2">uri</a>;
+    };
+</pre></div><p>
+Users can add their own data to the end of this data structure. Callbacks and their meanings are:<p>
+<div class="fragment"><pre class="fragment">    <span class="keywordtype">void</span> *match(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p,
+                <span class="keyword">const</span> <span class="keywordtype">char</span> *path,
+                <span class="keywordtype">int</span> len,
+                <span class="keywordtype">int</span> base)
+</pre></div><p>
+Given the file 'path' of 'len' bytes, with base name starting at 'base' bytes offset inside 'path', return a match. Non-NULL values means it matched, and this return will be given to parse() function so any match-time analysis can be reused. This function will be used in the slave process.<p>
+<div class="fragment"><pre class="fragment">    <span class="keywordtype">int</span> parse(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p,
+              <span class="keyword">struct</span> <a class="code" href="structlms__context.html">lms_context</a> *ctxt,
+              <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo,
+              <span class="keywordtype">void</span> *match)
+</pre></div><p>
+Given the parsing context 'ctxt' (contains DB connection, charset conversion pointers and possible more), parse the file information 'finfo' using the previously matched data 'match'. This should return 0 on success or other value for errors. This will be used in the slave process.<p>
+<div class="fragment"><pre class="fragment">    <span class="keywordtype">int</span> close(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p)
+</pre></div><p>
+Closes the plugin returned by lms_plugin_open(), this will run on the master process.<p>
+<div class="fragment"><pre class="fragment">    <span class="keywordtype">int</span> setup(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">struct</span> <a class="code" href="structlms__context.html">lms_context</a> *ctxt)
+</pre></div><p>
+Prepare <a class="el" href="structparser.html">parser</a> to be executed. This is the first phase of plugin initialization on the slave process, it should create database tables and like, after this function is called, no database schema changes are allowed!<p>
+<div class="fragment"><pre class="fragment">    <span class="keywordtype">int</span> start(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">struct</span> <a class="code" href="structlms__context.html">lms_context</a> *ctxt)
+</pre></div><p>
+This is the second phase of plugin initialization on the slave process. At this point, all database tables should exist and database schema will not be changed anymore, so one can use this phase to compile SQL statements for future use.<p>
+<div class="fragment"><pre class="fragment">    <span class="keywordtype">int</span> finish(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">struct</span> <a class="code" href="structlms__context.html">lms_context</a> *ctxt)
+</pre></div><p>
+Finishes the plugin on slave process.<p>
+Although LMS doesn't place any restrictions on what plugins can do and how they store information, it's good to have standard tables and easy way to store data on them. For this task we provide <a class="el" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a> with functions to add audios, images, videos, playlists and possible more. Use should be pretty straightforward, see existing plugins to see usage examples. </div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/index.html b/www/api/index.html
new file mode 100644 (file)
index 0000000..377c5c6
--- /dev/null
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Main Page</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>Light Media Scanner Documentation</h1>
+<p>
+<h3 align="center">0.1 </h3>Copyright (C) 2008 by ProFUSION embedded systems Copyright (C) 2007 by INdT<p>
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:barbieri@profusion.mobi">barbieri@profusion.mobi</a>&gt; <p>
+Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt;</dd></dl>
+The architecture is based on 2 processes that cooperate, the first is the driver, that controls the behavior of the worker/slave process, that does the hard work. This slave process is meant to make the software more robust since some <a class="el" href="structparser.html">parser</a> libraries and even user-provided media is not reliable, so if for some reason the worker process freezes, it's killed and then restarted with the next item.<p>
+User API is quite simple, with means to add new charsets to be tried and new parsers to handle media. The most important functions are (see <a class="el" href="lightmediascanner_8h.html">lightmediascanner.h</a>):<p>
+<ul>
+<li>int <a class="el" href="lightmediascanner__process_8c.html#c2f07fb73717514237862c98dbf023b2">lms_process(lms_t *lms, const char *top_path)</a></li><li>int <a class="el" href="lightmediascanner__check_8c.html#859492d896e816498edb471315efced1">lms_check(lms_t *lms, const char *top_path)</a></li></ul>
+<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>The whole library follows libC standard of "0 (zero) means success", unless explicitly stated (usually boolean queries where no error is possible/interesting).</dd></dl>
+The first will walk all the files and children directories of top_path, check if files are handled by some <a class="el" href="structparser.html">parser</a> and if they're, they'll be parsed and registered in the data base.<p>
+The second will get all already registered media in data base that is located at top_path and see if they're still up to date, deleted or changed. If they were deleted, a flag is set on data base with current time, so it can be expired at some point. If they were marked as deleted, but are not present again, check if the state is still valid (mtime, size), so we can avoid re-parse of removable media. If the file was present and is still present, just check if its properties (mtime, size) are still the same, if not trigger re-parse.<p>
+Parsers are handled as shared object plugins, they can be added without modification to the core, see the plugins API later in this document. Since the core have no control over plugins, they can register data as they want, but since some utilities are provided, we expect that the given data base tables are used:<p>
+<ul>
+<li><b>files:</b> known files.<ul>
+<li>id: identification inside LMS/DB.</li><li>path: file path.</li><li>mtime: modification time, in seconds from UNIX epoch.</li><li>dtime: modification time, in seconds from UNIX epoch.</li><li>size: in bytes.</li></ul>
+</li><li><b>audios:</b> audio files.<ul>
+<li>id: same as files.id</li><li>title: audio title.</li><li>album_id: same as audio_albums.id.</li><li>artist_id: same as audio_artists.id.</li><li>genre_id: same as audio_genres.id.</li><li>trackno: track number.</li><li>rating: rating.</li><li>playcnt: play count.</li></ul>
+</li><li><b>audio_artists:</b> audio artists.<ul>
+<li>id: identification inside LMS/DB.</li><li>name: artist name.</li></ul>
+</li><li><b>audio_albums:</b> audio albums.<ul>
+<li>id: identification inside LMS/DB.</li><li>artist_id: same as audio_artists.id.</li><li>name: album name.</li></ul>
+</li><li><b>audio_genres:</b> audio genres.<ul>
+<li>id: identification inside LMS/DB.</li><li>name: genre name.</li></ul>
+</li><li><b>playlists:</b> playlists.<ul>
+<li>id: identification inside LMS/DB.</li><li>title: playlists title.</li><li>n_entries: number of entries in this playlist.</li></ul>
+</li><li><b>images:</b> image files.<ul>
+<li>id: identification inside LMS/DB.</li><li>title: image title.</li><li>artist: image creator or artirst or photographer or ...</li><li>date: image taken date or creation date or ...</li><li>width: image width.</li><li>height: image height.</li><li>orientation: image orientation.</li><li>gps_lat: GPS latitude.</li><li>gps_long: GPS longitude.</li><li>gps_alt: GPS altitude.</li></ul>
+</li><li><b>videos:</b> video files.<ul>
+<li>id: identification inside LMS/DB.</li><li>title: video title.</li><li>artist: video artist or creator or producer or ... </li></ul>
+</li></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner_8c-source.html b/www/api/lightmediascanner_8c-source.html
new file mode 100644 (file)
index 0000000..6a8a8d5
--- /dev/null
@@ -0,0 +1,672 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner.c Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>src/lib/lightmediascanner.c</h1><a href="lightmediascanner_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifdef HAVE_CONFIG_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#include "config.h"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#endif</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;dlfcn.h&gt;</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;string.h&gt;</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;dirent.h&gt;</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;errno.h&gt;</span>
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="lightmediascanner_8h.html">lightmediascanner.h</a>"</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__private_8h.html">lightmediascanner_private.h</a>"</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__plugin_8h.html">lightmediascanner_plugin.h</a>"</span>
+<a name="l00035"></a>00035 
+<a name="l00036"></a><a class="code" href="lightmediascanner_8c.html#c2843894cca63ec0089c381e69d1d81a">00036</a> <span class="preprocessor">#define DEFAULT_SLAVE_TIMEOUT 1000</span>
+<a name="l00037"></a><a class="code" href="lightmediascanner_8c.html#6d0480dc76aba4a2291d79ac2466fc59">00037</a> <span class="preprocessor"></span><span class="preprocessor">#define DEFAULT_COMMIT_INTERVAL 100</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span>
+<a name="l00039"></a>00039 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00040"></a>00040 _parser_load(<span class="keyword">struct</span> <a class="code" href="structparser.html">parser</a> *p, <span class="keyword">const</span> <span class="keywordtype">char</span> *so_path)
+<a name="l00041"></a>00041 {
+<a name="l00042"></a>00042     <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *(*plugin_open)(void);
+<a name="l00043"></a>00043     <span class="keywordtype">char</span> *errmsg;
+<a name="l00044"></a>00044 
+<a name="l00045"></a>00045     memset(p, 0, <span class="keyword">sizeof</span>(*p));
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047     p-&gt;<a class="code" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">dl_handle</a> = dlopen(so_path, RTLD_NOW | RTLD_LOCAL);
+<a name="l00048"></a>00048     errmsg = dlerror();
+<a name="l00049"></a>00049     <span class="keywordflow">if</span> (errmsg) {
+<a name="l00050"></a>00050         fprintf(stderr, <span class="stringliteral">"ERROR: could not dlopen() %s\n"</span>, errmsg);
+<a name="l00051"></a>00051         <span class="keywordflow">return</span> -1;
+<a name="l00052"></a>00052     }
+<a name="l00053"></a>00053 
+<a name="l00054"></a>00054     plugin_open = dlsym(p-&gt;<a class="code" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">dl_handle</a>, <span class="stringliteral">"lms_plugin_open"</span>);
+<a name="l00055"></a>00055     errmsg = dlerror();
+<a name="l00056"></a>00056     <span class="keywordflow">if</span> (errmsg) {
+<a name="l00057"></a>00057         fprintf(stderr, <span class="stringliteral">"ERROR: could not find plugin entry point %s\n"</span>,
+<a name="l00058"></a>00058                 errmsg);
+<a name="l00059"></a>00059         <span class="keywordflow">return</span> -2;
+<a name="l00060"></a>00060     }
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062     p-&gt;<a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a> = strdup(so_path);
+<a name="l00063"></a>00063     <span class="keywordflow">if</span> (!p-&gt;<a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a>) {
+<a name="l00064"></a>00064         perror(<span class="stringliteral">"strdup"</span>);
+<a name="l00065"></a>00065         <span class="keywordflow">return</span> -3;
+<a name="l00066"></a>00066     }
+<a name="l00067"></a>00067 
+<a name="l00068"></a>00068     p-&gt;<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a> = plugin_open();
+<a name="l00069"></a>00069     <span class="keywordflow">if</span> (!p-&gt;<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>) {
+<a name="l00070"></a>00070         fprintf(stderr, <span class="stringliteral">"ERROR: plugin \"%s\" failed to init.\n"</span>, so_path);
+<a name="l00071"></a>00071         <span class="keywordflow">return</span> -4;
+<a name="l00072"></a>00072     }
+<a name="l00073"></a>00073 
+<a name="l00074"></a>00074     <span class="keywordflow">return</span> 0;
+<a name="l00075"></a>00075 }
+<a name="l00076"></a>00076 
+<a name="l00077"></a>00077 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00078"></a>00078 _parser_unload(<span class="keyword">struct</span> <a class="code" href="structparser.html">parser</a> *p)
+<a name="l00079"></a>00079 {
+<a name="l00080"></a>00080     <span class="keywordtype">int</span> r;
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082     r = 0;
+<a name="l00083"></a>00083     <span class="keywordflow">if</span> (p-&gt;<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>) {
+<a name="l00084"></a>00084         <span class="keywordflow">if</span> (p-&gt;<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>-&gt;<a class="code" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">close</a>(p-&gt;<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>) != 0) {
+<a name="l00085"></a>00085             fprintf(stderr, <span class="stringliteral">"ERROR: plugin \"%s\" failed to deinit.\n"</span>,
+<a name="l00086"></a>00086                     p-&gt;<a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a>);
+<a name="l00087"></a>00087             r -= 1;
+<a name="l00088"></a>00088         }
+<a name="l00089"></a>00089     }
+<a name="l00090"></a>00090 
+<a name="l00091"></a>00091     <span class="keywordflow">if</span> (p-&gt;<a class="code" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">dl_handle</a>) {
+<a name="l00092"></a>00092         <span class="keywordtype">char</span> *errmsg;
+<a name="l00093"></a>00093 
+<a name="l00094"></a>00094         dlclose(p-&gt;<a class="code" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">dl_handle</a>);
+<a name="l00095"></a>00095         errmsg = dlerror();
+<a name="l00096"></a>00096         <span class="keywordflow">if</span> (errmsg) {
+<a name="l00097"></a>00097             fprintf(stderr, <span class="stringliteral">"ERROR: could not dlclose() plugin \"%s\": %s\n"</span>,
+<a name="l00098"></a>00098                     errmsg, p-&gt;<a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a>);
+<a name="l00099"></a>00099             r -= 1;
+<a name="l00100"></a>00100         }
+<a name="l00101"></a>00101     }
+<a name="l00102"></a>00102 
+<a name="l00103"></a>00103     <span class="keywordflow">if</span> (p-&gt;<a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a>)
+<a name="l00104"></a>00104         free(p-&gt;<a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a>);
+<a name="l00105"></a>00105 
+<a name="l00106"></a>00106     <span class="keywordflow">return</span> r;
+<a name="l00107"></a>00107 }
+<a name="l00108"></a>00108 
+<a name="l00109"></a>00109 
+<a name="l00110"></a>00110 <span class="comment">/***********************************************************************</span>
+<a name="l00111"></a>00111 <span class="comment"> * Public API.</span>
+<a name="l00112"></a>00112 <span class="comment"> ***********************************************************************/</span>
+<a name="l00120"></a>00120 <a class="code" href="structlms.html">lms_t</a> *
+<a name="l00121"></a><a class="code" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">00121</a> <a class="code" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">lms_new</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *db_path)
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123     <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>;
+<a name="l00124"></a>00124 
+<a name="l00125"></a>00125     lms = calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="structlms.html">lms_t</a>));
+<a name="l00126"></a>00126     <span class="keywordflow">if</span> (!lms) {
+<a name="l00127"></a>00127         perror(<span class="stringliteral">"calloc"</span>);
+<a name="l00128"></a>00128         <span class="keywordflow">return</span> NULL;
+<a name="l00129"></a>00129     }
+<a name="l00130"></a>00130 
+<a name="l00131"></a>00131     lms-&gt;<a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a> = <a class="code" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lms_charset_conv_new</a>();
+<a name="l00132"></a>00132     <span class="keywordflow">if</span> (!lms-&gt;<a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>) {
+<a name="l00133"></a>00133         free(lms);
+<a name="l00134"></a>00134         <span class="keywordflow">return</span> NULL;
+<a name="l00135"></a>00135     }
+<a name="l00136"></a>00136 
+<a name="l00137"></a>00137     lms-&gt;<a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a> = <a class="code" href="lightmediascanner_8c.html#6d0480dc76aba4a2291d79ac2466fc59">DEFAULT_COMMIT_INTERVAL</a>;
+<a name="l00138"></a>00138     lms-&gt;<a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a> = <a class="code" href="lightmediascanner_8c.html#c2843894cca63ec0089c381e69d1d81a">DEFAULT_SLAVE_TIMEOUT</a>;
+<a name="l00139"></a>00139     lms-&gt;<a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a> = strdup(db_path);
+<a name="l00140"></a>00140     <span class="keywordflow">if</span> (!lms-&gt;<a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>) {
+<a name="l00141"></a>00141         perror(<span class="stringliteral">"strdup"</span>);
+<a name="l00142"></a>00142         <a class="code" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lms_charset_conv_free</a>(lms-&gt;<a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>);
+<a name="l00143"></a>00143         free(lms);
+<a name="l00144"></a>00144         <span class="keywordflow">return</span> NULL;
+<a name="l00145"></a>00145     }
+<a name="l00146"></a>00146 
+<a name="l00147"></a>00147     <span class="keywordflow">return</span> lms;
+<a name="l00148"></a>00148 }
+<a name="l00149"></a>00149 
+<a name="l00158"></a>00158 <span class="keywordtype">int</span>
+<a name="l00159"></a><a class="code" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">00159</a> <a class="code" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lms_free</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>)
+<a name="l00160"></a>00160 {
+<a name="l00161"></a>00161     <span class="keywordtype">int</span> i;
+<a name="l00162"></a>00162 
+<a name="l00163"></a>00163     <span class="keywordflow">if</span> (!lms)
+<a name="l00164"></a>00164         <span class="keywordflow">return</span> 0;
+<a name="l00165"></a>00165 
+<a name="l00166"></a>00166     <span class="keywordflow">if</span> (lms-&gt;<a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>)
+<a name="l00167"></a>00167         <span class="keywordflow">return</span> -1;
+<a name="l00168"></a>00168 
+<a name="l00169"></a>00169     <span class="keywordflow">if</span> (lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>) {
+<a name="l00170"></a>00170         <span class="keywordflow">for</span> (i = 0; i &lt; lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>; i++)
+<a name="l00171"></a>00171             _parser_unload(lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> + i);
+<a name="l00172"></a>00172 
+<a name="l00173"></a>00173         free(lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>);
+<a name="l00174"></a>00174     }
+<a name="l00175"></a>00175 
+<a name="l00176"></a>00176     <span class="keywordflow">if</span> (lms-&gt;<a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a> &amp;&amp; lms-&gt;<a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">free_data</a>)
+<a name="l00177"></a>00177         lms-&gt;<a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">free_data</a>(lms-&gt;<a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a>);
+<a name="l00178"></a>00178 
+<a name="l00179"></a>00179     free(lms-&gt;<a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>);
+<a name="l00180"></a>00180     <a class="code" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lms_charset_conv_free</a>(lms-&gt;<a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>);
+<a name="l00181"></a>00181     free(lms);
+<a name="l00182"></a>00182     <span class="keywordflow">return</span> 0;
+<a name="l00183"></a>00183 }
+<a name="l00184"></a>00184 
+<a name="l00194"></a>00194 <span class="keywordtype">void</span>
+<a name="l00195"></a><a class="code" href="lightmediascanner_8h.html#d2da241599f7f576670d64184f972c43">00195</a> <a class="code" href="lightmediascanner_8c.html#668e706f6d5eae3ba5e36ff4db2ae514">lms_set_progress_callback</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <a class="code" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> cb, <span class="keyword">const</span> <span class="keywordtype">void</span> *data, <a class="code" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a> free_data)
+<a name="l00196"></a>00196 {
+<a name="l00197"></a>00197     <span class="keywordflow">if</span> (!lms) {
+<a name="l00198"></a>00198         <span class="keywordflow">if</span> (data &amp;&amp; free_data)
+<a name="l00199"></a>00199             free_data((<span class="keywordtype">void</span> *)data);
+<a name="l00200"></a>00200         <span class="keywordflow">return</span>;
+<a name="l00201"></a>00201     }
+<a name="l00202"></a>00202 
+<a name="l00203"></a>00203     <span class="keywordflow">if</span> (lms-&gt;<a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a> &amp;&amp; lms-&gt;<a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">free_data</a>)
+<a name="l00204"></a>00204         lms-&gt;<a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">free_data</a>(lms-&gt;<a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a>);
+<a name="l00205"></a>00205 
+<a name="l00206"></a>00206     lms-&gt;<a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#94615d22fba40d580a8a0055d28221c4">cb</a> = cb;
+<a name="l00207"></a>00207     lms-&gt;<a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a> = (<span class="keywordtype">void</span> *)data;
+<a name="l00208"></a>00208     lms-&gt;<a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">free_data</a> = free_data;
+<a name="l00209"></a>00209 }
+<a name="l00210"></a>00210 
+<a name="l00220"></a>00220 <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *
+<a name="l00221"></a><a class="code" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">00221</a> <a class="code" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">lms_parser_add</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *so_path)
+<a name="l00222"></a>00222 {
+<a name="l00223"></a>00223     <span class="keyword">struct </span><a class="code" href="structparser.html">parser</a> *<a class="code" href="structparser.html">parser</a>;
+<a name="l00224"></a>00224 
+<a name="l00225"></a>00225     <span class="keywordflow">if</span> (!lms)
+<a name="l00226"></a>00226         <span class="keywordflow">return</span> NULL;
+<a name="l00227"></a>00227 
+<a name="l00228"></a>00228     <span class="keywordflow">if</span> (!so_path)
+<a name="l00229"></a>00229         <span class="keywordflow">return</span> NULL;
+<a name="l00230"></a>00230 
+<a name="l00231"></a>00231     <span class="keywordflow">if</span> (lms-&gt;<a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>) {
+<a name="l00232"></a>00232         fprintf(stderr, <span class="stringliteral">"ERROR: do not add parsers while it's processing.\n"</span>);
+<a name="l00233"></a>00233         <span class="keywordflow">return</span> NULL;
+<a name="l00234"></a>00234     }
+<a name="l00235"></a>00235 
+<a name="l00236"></a>00236     lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> = realloc(lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>,
+<a name="l00237"></a>00237                            (lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> + 1) * <span class="keyword">sizeof</span>(<span class="keyword">struct</span> parser));
+<a name="l00238"></a>00238     <span class="keywordflow">if</span> (!lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>) {
+<a name="l00239"></a>00239         perror(<span class="stringliteral">"realloc"</span>);
+<a name="l00240"></a>00240         <span class="keywordflow">return</span> NULL;
+<a name="l00241"></a>00241     }
+<a name="l00242"></a>00242 
+<a name="l00243"></a>00243     parser = lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> + lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>;
+<a name="l00244"></a>00244     <span class="keywordflow">if</span> (_parser_load(parser, so_path) != 0) {
+<a name="l00245"></a>00245         _parser_unload(parser);
+<a name="l00246"></a>00246         <span class="keywordflow">return</span> NULL;
+<a name="l00247"></a>00247     }
+<a name="l00248"></a>00248 
+<a name="l00249"></a>00249     lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>++;
+<a name="l00250"></a>00250     <span class="keywordflow">return</span> parser-&gt;<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>;
+<a name="l00251"></a>00251 }
+<a name="l00252"></a>00252 
+<a name="l00253"></a>00253 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00254"></a>00254 lms_parser_find(<span class="keywordtype">char</span> *buf, <span class="keywordtype">int</span> buf_size, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
+<a name="l00255"></a>00255 {
+<a name="l00256"></a>00256     <span class="keywordtype">int</span> r;
+<a name="l00257"></a>00257 
+<a name="l00258"></a>00258     r = snprintf(buf, buf_size, <span class="stringliteral">"%s/%s.so"</span>, PLUGINSDIR, name);
+<a name="l00259"></a>00259     <span class="keywordflow">if</span> (r &gt;= buf_size)
+<a name="l00260"></a>00260         <span class="keywordflow">return</span> 0;
+<a name="l00261"></a>00261 
+<a name="l00262"></a>00262     <span class="keywordflow">return</span> 1;
+<a name="l00263"></a>00263 }
+<a name="l00264"></a>00264 
+<a name="l00265"></a>00265 
+<a name="l00278"></a>00278 <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *
+<a name="l00279"></a><a class="code" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">00279</a> <a class="code" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">lms_parser_find_and_add</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
+<a name="l00280"></a>00280 {
+<a name="l00281"></a>00281     <span class="keywordtype">char</span> <a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a>[PATH_MAX];
+<a name="l00282"></a>00282 
+<a name="l00283"></a>00283     <span class="keywordflow">if</span> (!lms)
+<a name="l00284"></a>00284         <span class="keywordflow">return</span> NULL;
+<a name="l00285"></a>00285     <span class="keywordflow">if</span> (!name)
+<a name="l00286"></a>00286         <span class="keywordflow">return</span> NULL;
+<a name="l00287"></a>00287 
+<a name="l00288"></a>00288     <span class="keywordflow">if</span> (!lms_parser_find(so_path, <span class="keyword">sizeof</span>(so_path), name))
+<a name="l00289"></a>00289         <span class="keywordflow">return</span> NULL;
+<a name="l00290"></a>00290     <span class="keywordflow">return</span> <a class="code" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">lms_parser_add</a>(lms, so_path);
+<a name="l00291"></a>00291 }
+<a name="l00292"></a>00292 
+<a name="l00293"></a>00293 <span class="keywordtype">int</span>
+<a name="l00294"></a><a class="code" href="lightmediascanner__private_8h.html#239fc535d2f20f09eeec9df86aa6ef9b">00294</a> <a class="code" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lms_parser_del_int</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">int</span> i)
+<a name="l00295"></a>00295 {
+<a name="l00296"></a>00296     <span class="keyword">struct </span><a class="code" href="structparser.html">parser</a> *<a class="code" href="structparser.html">parser</a>;
+<a name="l00297"></a>00297 
+<a name="l00298"></a>00298     parser = lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> + i;
+<a name="l00299"></a>00299     _parser_unload(parser);
+<a name="l00300"></a>00300     lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>--;
+<a name="l00301"></a>00301 
+<a name="l00302"></a>00302     <span class="keywordflow">if</span> (lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> == 0) {
+<a name="l00303"></a>00303         free(lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>);
+<a name="l00304"></a>00304         lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> = NULL;
+<a name="l00305"></a>00305         <span class="keywordflow">return</span> 0;
+<a name="l00306"></a>00306     } <span class="keywordflow">else</span> {
+<a name="l00307"></a>00307         <span class="keywordtype">int</span> dif;
+<a name="l00308"></a>00308 
+<a name="l00309"></a>00309         dif = lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> - i;
+<a name="l00310"></a>00310         <span class="keywordflow">if</span> (dif)
+<a name="l00311"></a>00311             lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> = memmove(parser, parser + 1,
+<a name="l00312"></a>00312                                    dif * <span class="keyword">sizeof</span>(<span class="keyword">struct</span> parser));
+<a name="l00313"></a>00313 
+<a name="l00314"></a>00314         lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> = realloc(lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>,
+<a name="l00315"></a>00315                                lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> * <span class="keyword">sizeof</span>(<span class="keyword">struct</span> parser));
+<a name="l00316"></a>00316         <span class="keywordflow">if</span> (!lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>) {
+<a name="l00317"></a>00317             lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> = 0;
+<a name="l00318"></a>00318             <span class="keywordflow">return</span> -1;
+<a name="l00319"></a>00319         }
+<a name="l00320"></a>00320 
+<a name="l00321"></a>00321         <span class="keywordflow">return</span> 0;
+<a name="l00322"></a>00322     }
+<a name="l00323"></a>00323 }
+<a name="l00324"></a>00324 
+<a name="l00333"></a>00333 <span class="keywordtype">int</span>
+<a name="l00334"></a><a class="code" href="group__LMS__API.html#g1da5e5f834e0289ea49a0fbc2280feda">00334</a> <a class="code" href="group__LMS__API.html#g1da5e5f834e0289ea49a0fbc2280feda">lms_parser_del</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *handle)
+<a name="l00335"></a>00335 {
+<a name="l00336"></a>00336     <span class="keywordtype">int</span> i;
+<a name="l00337"></a>00337 
+<a name="l00338"></a>00338     <span class="keywordflow">if</span> (!lms)
+<a name="l00339"></a>00339         <span class="keywordflow">return</span> -1;
+<a name="l00340"></a>00340     <span class="keywordflow">if</span> (!handle)
+<a name="l00341"></a>00341         <span class="keywordflow">return</span> -2;
+<a name="l00342"></a>00342     <span class="keywordflow">if</span> (!lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>)
+<a name="l00343"></a>00343         <span class="keywordflow">return</span> -3;
+<a name="l00344"></a>00344     <span class="keywordflow">if</span> (lms-&gt;<a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>) {
+<a name="l00345"></a>00345         fprintf(stderr, <span class="stringliteral">"ERROR: do not del parsers while it's processing.\n"</span>);
+<a name="l00346"></a>00346         <span class="keywordflow">return</span> -4;
+<a name="l00347"></a>00347     }
+<a name="l00348"></a>00348 
+<a name="l00349"></a>00349     <span class="keywordflow">for</span> (i = 0; i &lt; lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>; i++)
+<a name="l00350"></a>00350         <span class="keywordflow">if</span> (lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>[i].<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a> == handle)
+<a name="l00351"></a>00351             <span class="keywordflow">return</span> <a class="code" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lms_parser_del_int</a>(lms, i);
+<a name="l00352"></a>00352 
+<a name="l00353"></a>00353     <span class="keywordflow">return</span> -3;
+<a name="l00354"></a>00354 }
+<a name="l00355"></a>00355 
+<a name="l00365"></a>00365 <span class="keywordtype">int</span>
+<a name="l00366"></a><a class="code" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">00366</a> <a class="code" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">lms_is_processing</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>)
+<a name="l00367"></a>00367 {
+<a name="l00368"></a>00368     <span class="keywordflow">if</span> (!lms) {
+<a name="l00369"></a>00369         fprintf(stderr, <span class="stringliteral">"ERROR: lms_is_processing(NULL)\n"</span>);
+<a name="l00370"></a>00370         <span class="keywordflow">return</span> -1;
+<a name="l00371"></a>00371     }
+<a name="l00372"></a>00372 
+<a name="l00373"></a>00373     <span class="keywordflow">return</span> lms-&gt;<a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>;
+<a name="l00374"></a>00374 }
+<a name="l00375"></a>00375 
+<a name="l00384"></a>00384 <span class="keyword">const</span> <span class="keywordtype">char</span> *
+<a name="l00385"></a><a class="code" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">00385</a> <a class="code" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lms_get_db_path</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>)
+<a name="l00386"></a>00386 {
+<a name="l00387"></a>00387     <span class="keywordflow">if</span> (!lms) {
+<a name="l00388"></a>00388         fprintf(stderr, <span class="stringliteral">"ERROR: lms_get_db_path(NULL)\n"</span>);
+<a name="l00389"></a>00389         <span class="keywordflow">return</span> NULL;
+<a name="l00390"></a>00390     }
+<a name="l00391"></a>00391 
+<a name="l00392"></a>00392     <span class="keywordflow">return</span> lms-&gt;<a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>;
+<a name="l00393"></a>00393 }
+<a name="l00394"></a>00394 
+<a name="l00406"></a>00406 <span class="keywordtype">int</span>
+<a name="l00407"></a><a class="code" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">00407</a> <a class="code" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lms_get_slave_timeout</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>)
+<a name="l00408"></a>00408 {
+<a name="l00409"></a>00409     <span class="keywordflow">if</span> (!lms) {
+<a name="l00410"></a>00410         fprintf(stderr, <span class="stringliteral">"ERROR: lms_get_slave_timeout(NULL)\n"</span>);
+<a name="l00411"></a>00411         <span class="keywordflow">return</span> -1;
+<a name="l00412"></a>00412     }
+<a name="l00413"></a>00413 
+<a name="l00414"></a>00414     <span class="keywordflow">return</span> lms-&gt;<a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>;
+<a name="l00415"></a>00415 }
+<a name="l00416"></a>00416 
+<a name="l00427"></a><a class="code" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">00427</a> <span class="keywordtype">void</span> <a class="code" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lms_set_slave_timeout</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">int</span> ms)
+<a name="l00428"></a>00428 {
+<a name="l00429"></a>00429     <span class="keywordflow">if</span> (!lms) {
+<a name="l00430"></a>00430         fprintf(stderr, <span class="stringliteral">"ERROR: lms_set_slave_timeout(NULL, %d)\n"</span>, ms);
+<a name="l00431"></a>00431         <span class="keywordflow">return</span>;
+<a name="l00432"></a>00432     }
+<a name="l00433"></a>00433 
+<a name="l00434"></a>00434     lms-&gt;<a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a> = ms;
+<a name="l00435"></a>00435 }
+<a name="l00436"></a>00436 
+<a name="l00448"></a>00448 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>
+<a name="l00449"></a><a class="code" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">00449</a> <a class="code" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lms_get_commit_interval</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>)
+<a name="l00450"></a>00450 {
+<a name="l00451"></a>00451     <span class="keywordflow">if</span> (!lms) {
+<a name="l00452"></a>00452         fprintf(stderr, <span class="stringliteral">"ERROR: lms_get_commit_interval(NULL)\n"</span>);
+<a name="l00453"></a>00453         <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)-1;
+<a name="l00454"></a>00454     }
+<a name="l00455"></a>00455 
+<a name="l00456"></a>00456     <span class="keywordflow">return</span> lms-&gt;<a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a>;
+<a name="l00457"></a>00457 }
+<a name="l00458"></a>00458 
+<a name="l00471"></a>00471 <span class="keywordtype">void</span>
+<a name="l00472"></a><a class="code" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">00472</a> <a class="code" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lms_set_commit_interval</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> transactions)
+<a name="l00473"></a>00473 {
+<a name="l00474"></a>00474     <span class="keywordflow">if</span> (!lms) {
+<a name="l00475"></a>00475         fprintf(stderr, <span class="stringliteral">"ERROR: lms_set_commit_interval(NULL, %u)\n"</span>,
+<a name="l00476"></a>00476                 transactions);
+<a name="l00477"></a>00477         <span class="keywordflow">return</span>;
+<a name="l00478"></a>00478     }
+<a name="l00479"></a>00479 
+<a name="l00480"></a>00480     lms-&gt;<a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a> = transactions;
+<a name="l00481"></a>00481 }
+<a name="l00482"></a>00482 
+<a name="l00495"></a>00495 <span class="keywordtype">int</span>
+<a name="l00496"></a><a class="code" href="group__LMS__API.html#g4fd56e209d415b27466274726cc7d59f">00496</a> <a class="code" href="group__LMS__API.html#g4fd56e209d415b27466274726cc7d59f">lms_charset_add</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset)
+<a name="l00497"></a>00497 {
+<a name="l00498"></a>00498     <span class="keywordflow">if</span> (!lms) {
+<a name="l00499"></a>00499         fprintf(stderr, <span class="stringliteral">"ERROR: lms_charset_add(NULL)\n"</span>);
+<a name="l00500"></a>00500         <span class="keywordflow">return</span> -1;
+<a name="l00501"></a>00501     }
+<a name="l00502"></a>00502 
+<a name="l00503"></a>00503     <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lms_charset_conv_add</a>(lms-&gt;<a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>, charset);
+<a name="l00504"></a>00504 }
+<a name="l00505"></a>00505 
+<a name="l00518"></a>00518 <span class="keywordtype">int</span>
+<a name="l00519"></a><a class="code" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">00519</a> <a class="code" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">lms_charset_del</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset)
+<a name="l00520"></a>00520 {
+<a name="l00521"></a>00521     <span class="keywordflow">if</span> (!lms) {
+<a name="l00522"></a>00522         fprintf(stderr, <span class="stringliteral">"ERROR: lms_charset_del(NULL)\n"</span>);
+<a name="l00523"></a>00523         <span class="keywordflow">return</span> -1;
+<a name="l00524"></a>00524     }
+<a name="l00525"></a>00525 
+<a name="l00526"></a>00526     <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">lms_charset_conv_del</a>(lms-&gt;<a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>, charset);
+<a name="l00527"></a>00527 }
+<a name="l00528"></a>00528 
+<a name="l00539"></a>00539 <span class="keywordtype">void</span>
+<a name="l00540"></a><a class="code" href="lightmediascanner_8h.html#ebe19263efa873f4629a18e77924bfaf">00540</a> <a class="code" href="lightmediascanner_8c.html#7e27ccbd0abfd5d112586a00fd424db9">lms_parsers_list</a>(<span class="keywordtype">int</span> (*cb)(<span class="keywordtype">void</span> *data, <span class="keyword">const</span> <span class="keywordtype">char</span> *path), <span class="keyword">const</span> <span class="keywordtype">void</span> *data)
+<a name="l00541"></a>00541 {
+<a name="l00542"></a>00542     <span class="keywordtype">void</span> *datap = (<span class="keywordtype">void</span> *)data;
+<a name="l00543"></a>00543     <span class="keywordtype">char</span> path[PATH_MAX] = PLUGINSDIR;
+<a name="l00544"></a>00544     <span class="keywordtype">int</span> base;
+<a name="l00545"></a>00545     DIR *d;
+<a name="l00546"></a>00546     <span class="keyword">struct </span>dirent *de;
+<a name="l00547"></a>00547 
+<a name="l00548"></a>00548     <span class="keywordflow">if</span> (!cb)
+<a name="l00549"></a>00549         <span class="keywordflow">return</span>;
+<a name="l00550"></a>00550 
+<a name="l00551"></a>00551     base = <span class="keyword">sizeof</span>(PLUGINSDIR) - 1;
+<a name="l00552"></a>00552     <span class="keywordflow">if</span> (base + <span class="keyword">sizeof</span>(<span class="stringliteral">"/.so"</span>) &gt;= PATH_MAX) {
+<a name="l00553"></a>00553         fprintf(stderr, <span class="stringliteral">"ERROR: path is too long '%s'\n"</span>, path);
+<a name="l00554"></a>00554         <span class="keywordflow">return</span>;
+<a name="l00555"></a>00555     }
+<a name="l00556"></a>00556 
+<a name="l00557"></a>00557     d = opendir(path);
+<a name="l00558"></a>00558     <span class="keywordflow">if</span> (!d) {
+<a name="l00559"></a>00559         fprintf(stderr, <span class="stringliteral">"ERROR: could not open directory %s: %s\n"</span>,
+<a name="l00560"></a>00560                 path, strerror(errno));
+<a name="l00561"></a>00561         <span class="keywordflow">return</span>;
+<a name="l00562"></a>00562     }
+<a name="l00563"></a>00563 
+<a name="l00564"></a>00564     path[base] = <span class="charliteral">'/'</span>;
+<a name="l00565"></a>00565     base++;
+<a name="l00566"></a>00566 
+<a name="l00567"></a>00567     <span class="keywordflow">while</span> ((de = readdir(d)) != NULL) {
+<a name="l00568"></a>00568         <span class="keywordtype">int</span> len;
+<a name="l00569"></a>00569 
+<a name="l00570"></a>00570         <span class="keywordflow">if</span> (de-&gt;d_name[0] == <span class="charliteral">'.'</span>)
+<a name="l00571"></a>00571             <span class="keywordflow">continue</span>;
+<a name="l00572"></a>00572 
+<a name="l00573"></a>00573         len = strlen(de-&gt;d_name);
+<a name="l00574"></a>00574         <span class="keywordflow">if</span> (len &lt; 3 || memcmp(de-&gt;d_name + len - 3, <span class="stringliteral">".so"</span>, 3) != 0)
+<a name="l00575"></a>00575             <span class="keywordflow">continue</span>;
+<a name="l00576"></a>00576 
+<a name="l00577"></a>00577         memcpy(path + base, de-&gt;d_name, len + 1); <span class="comment">/* copy \0 */</span>
+<a name="l00578"></a>00578         <span class="keywordflow">if</span> (!cb(datap, path))
+<a name="l00579"></a>00579             <span class="keywordflow">break</span>;
+<a name="l00580"></a>00580     }
+<a name="l00581"></a>00581     closedir(d);
+<a name="l00582"></a>00582 }
+<a name="l00583"></a>00583 
+<a name="l00584"></a>00584 <span class="keyword">struct </span>lms_parsers_list_by_category_data {
+<a name="l00585"></a>00585     <span class="keyword">const</span> <span class="keywordtype">char</span> *category;
+<a name="l00586"></a>00586     int (*cb)(<span class="keywordtype">void</span> *data, <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlms__parser__info.html">lms_parser_info</a> *info);
+<a name="l00587"></a>00587     <span class="keywordtype">void</span> *data;
+<a name="l00588"></a>00588 };
+<a name="l00589"></a>00589 
+<a name="l00590"></a>00590 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00591"></a>00591 _lms_parsers_list_by_category(<span class="keywordtype">void</span> *data, <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__parser__info.html#5ab9ec0ea57b30e14d5f6f671aac6590">path</a>)
+<a name="l00592"></a>00592 {
+<a name="l00593"></a>00593     <span class="keyword">struct </span>lms_parsers_list_by_category_data *d = data;
+<a name="l00594"></a>00594     <span class="keyword">struct </span><a class="code" href="structlms__parser__info.html">lms_parser_info</a> *info;
+<a name="l00595"></a>00595     <span class="keywordtype">int</span> r;
+<a name="l00596"></a>00596 
+<a name="l00597"></a>00597     info = <a class="code" href="lightmediascanner_8c.html#0b95c1ed1a71c241bb887ee672f740d8">lms_parser_info</a>(path);
+<a name="l00598"></a>00598     <span class="keywordflow">if</span> (!info)
+<a name="l00599"></a>00599         <span class="keywordflow">return</span> 1;
+<a name="l00600"></a>00600 
+<a name="l00601"></a>00601     r = 1;
+<a name="l00602"></a>00602     <span class="keywordflow">if</span> (info-&gt;<a class="code" href="structlms__parser__info.html#7ec98aa66587df4215d9d2e1be1efc04">categories</a>) {
+<a name="l00603"></a>00603         <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> *itr;
+<a name="l00604"></a>00604         <span class="keywordflow">for</span> (itr = info-&gt;<a class="code" href="structlms__parser__info.html#7ec98aa66587df4215d9d2e1be1efc04">categories</a>; *itr != NULL; itr++)
+<a name="l00605"></a>00605             <span class="keywordflow">if</span> (strcmp(d-&gt;category, *itr) == 0) {
+<a name="l00606"></a>00606                 r = d-&gt;cb(d-&gt;data, path, info);
+<a name="l00607"></a>00607                 <span class="keywordflow">break</span>;
+<a name="l00608"></a>00608             }
+<a name="l00609"></a>00609     }
+<a name="l00610"></a>00610 
+<a name="l00611"></a>00611     <a class="code" href="lightmediascanner_8c.html#508ef3c49f7f4729b9e5a5711b66bda1">lms_parser_info_free</a>(info);
+<a name="l00612"></a>00612 
+<a name="l00613"></a>00613     <span class="keywordflow">return</span> r;
+<a name="l00614"></a>00614 }
+<a name="l00615"></a>00615 
+<a name="l00628"></a>00628 <span class="keywordtype">void</span>
+<a name="l00629"></a><a class="code" href="lightmediascanner_8h.html#f6dfb5e9ed76e132ee7f45e7fe26415e">00629</a> <a class="code" href="lightmediascanner_8c.html#24f4c44982b286dc3ca451ca1acb6123">lms_parsers_list_by_category</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *category, <span class="keywordtype">int</span> (*cb)(<span class="keywordtype">void</span> *data, <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__parser__info.html">lms_parser_info</a> *info), <span class="keyword">const</span> <span class="keywordtype">void</span> *data)
+<a name="l00630"></a>00630 {
+<a name="l00631"></a>00631     <span class="keyword">struct </span>lms_parsers_list_by_category_data d;
+<a name="l00632"></a>00632 
+<a name="l00633"></a>00633     <span class="keywordflow">if</span> (!category || !cb)
+<a name="l00634"></a>00634         <span class="keywordflow">return</span>;
+<a name="l00635"></a>00635 
+<a name="l00636"></a>00636     d.category = category;
+<a name="l00637"></a>00637     d.cb = cb;
+<a name="l00638"></a>00638     d.data = (<span class="keywordtype">void</span> *)data;
+<a name="l00639"></a>00639 
+<a name="l00640"></a>00640     <a class="code" href="lightmediascanner_8c.html#7e27ccbd0abfd5d112586a00fd424db9">lms_parsers_list</a>(_lms_parsers_list_by_category, &amp;d);
+<a name="l00641"></a>00641 }
+<a name="l00642"></a>00642 
+<a name="l00643"></a>00643 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00644"></a>00644 _lms_string_array_count(<span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> *array, <span class="keywordtype">int</span> *size)
+<a name="l00645"></a>00645 {
+<a name="l00646"></a>00646     <span class="keywordtype">int</span> count, align_overflow;
+<a name="l00647"></a>00647 
+<a name="l00648"></a>00648     *size = 0;
+<a name="l00649"></a>00649     <span class="keywordflow">if</span> (!array)
+<a name="l00650"></a>00650         <span class="keywordflow">return</span> 0;
+<a name="l00651"></a>00651 
+<a name="l00652"></a>00652     count = 0;
+<a name="l00653"></a>00653     <span class="keywordflow">for</span> (; *array != NULL; array++) {
+<a name="l00654"></a>00654         *size += <span class="keyword">sizeof</span>(<span class="keywordtype">char</span> *) + strlen(*array) + 1;
+<a name="l00655"></a>00655         count++;
+<a name="l00656"></a>00656     }
+<a name="l00657"></a>00657     <span class="keywordflow">if</span> (count) {
+<a name="l00658"></a>00658         <span class="comment">/* count NULL terminator */</span>
+<a name="l00659"></a>00659         count++;
+<a name="l00660"></a>00660         *size += <span class="keyword">sizeof</span>(<span class="keywordtype">char</span> *);
+<a name="l00661"></a>00661     }
+<a name="l00662"></a>00662 
+<a name="l00663"></a>00663     align_overflow = *size % <span class="keyword">sizeof</span>(<span class="keywordtype">char</span> *);
+<a name="l00664"></a>00664     <span class="keywordflow">if</span> (align_overflow)
+<a name="l00665"></a>00665         *size += <span class="keyword">sizeof</span>(<span class="keywordtype">char</span> *) - align_overflow;
+<a name="l00666"></a>00666 
+<a name="l00667"></a>00667     <span class="keywordflow">return</span> count;
+<a name="l00668"></a>00668 }
+<a name="l00669"></a>00669 
+<a name="l00670"></a>00670 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00671"></a>00671 _lms_string_array_copy(<span class="keywordtype">char</span> **dst, <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> *src, <span class="keywordtype">int</span> count)
+<a name="l00672"></a>00672 {
+<a name="l00673"></a>00673     <span class="keywordtype">char</span> *d;
+<a name="l00674"></a>00674 
+<a name="l00675"></a>00675     d = (<span class="keywordtype">char</span> *)(dst + count);
+<a name="l00676"></a>00676 
+<a name="l00677"></a>00677     <span class="keywordflow">for</span> (; count &gt; 1; count--, dst++, src++) {
+<a name="l00678"></a>00678         <span class="keywordtype">int</span> len;
+<a name="l00679"></a>00679 
+<a name="l00680"></a>00680         len = strlen(*src) + 1;
+<a name="l00681"></a>00681         *dst = d;
+<a name="l00682"></a>00682         memcpy(*dst, *src, len);
+<a name="l00683"></a>00683         d += len;
+<a name="l00684"></a>00684     }
+<a name="l00685"></a>00685 
+<a name="l00686"></a>00686     *dst = NULL;
+<a name="l00687"></a>00687 }
+<a name="l00688"></a>00688 
+<a name="l00698"></a>00698 <span class="keyword">struct </span><a class="code" href="structlms__parser__info.html">lms_parser_info</a> *
+<a name="l00699"></a><a class="code" href="lightmediascanner_8h.html#bda4586257139ef13260e3fe3bfd1b77">00699</a> <a class="code" href="lightmediascanner_8c.html#0b95c1ed1a71c241bb887ee672f740d8">lms_parser_info</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *so_path)
+<a name="l00700"></a>00700 {
+<a name="l00701"></a>00701     <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlms__plugin__info.html">lms_plugin_info</a> *(*plugin_info)(void);
+<a name="l00702"></a>00702     <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlms__plugin__info.html">lms_plugin_info</a> *<a class="code" href="structpinfo.html">pinfo</a>;
+<a name="l00703"></a>00703     <span class="keyword">struct </span><a class="code" href="structlms__parser__info.html">lms_parser_info</a> *ret;
+<a name="l00704"></a>00704     <span class="keyword">const</span> <span class="keywordtype">char</span> *errmsg;
+<a name="l00705"></a>00705     <span class="keywordtype">void</span> *dl_handle;
+<a name="l00706"></a>00706     <span class="keywordtype">int</span> len, path_len, name_len, desc_len, ver_len, uri_len;
+<a name="l00707"></a>00707     <span class="keywordtype">int</span> cats_count, cats_size, authors_count, authors_size;
+<a name="l00708"></a>00708 
+<a name="l00709"></a>00709     <span class="keywordflow">if</span> (!so_path)
+<a name="l00710"></a>00710         <span class="keywordflow">return</span> NULL;
+<a name="l00711"></a>00711 
+<a name="l00712"></a>00712     dl_handle = dlopen(so_path, RTLD_NOW | RTLD_LOCAL);
+<a name="l00713"></a>00713     errmsg = dlerror();
+<a name="l00714"></a>00714     <span class="keywordflow">if</span> (errmsg) {
+<a name="l00715"></a>00715         fprintf(stderr, <span class="stringliteral">"ERROR: could not dlopen() %s\n"</span>, errmsg);
+<a name="l00716"></a>00716         <span class="keywordflow">return</span> NULL;
+<a name="l00717"></a>00717     }
+<a name="l00718"></a>00718 
+<a name="l00719"></a>00719     ret = NULL;
+<a name="l00720"></a>00720     plugin_info = dlsym(dl_handle, <span class="stringliteral">"lms_plugin_info"</span>);
+<a name="l00721"></a>00721     errmsg = dlerror();
+<a name="l00722"></a>00722     <span class="keywordflow">if</span> (errmsg) {
+<a name="l00723"></a>00723         fprintf(stderr, <span class="stringliteral">"ERROR: could not find plugin info function %s\n"</span>,
+<a name="l00724"></a>00724                 errmsg);
+<a name="l00725"></a>00725         <span class="keywordflow">goto</span> close_and_exit;
+<a name="l00726"></a>00726     }
+<a name="l00727"></a>00727 
+<a name="l00728"></a>00728     <span class="keywordflow">if</span> (!plugin_info) {
+<a name="l00729"></a>00729         fprintf(stderr, <span class="stringliteral">"ERROR: lms_plugin_info is NULL\n"</span>);
+<a name="l00730"></a>00730         <span class="keywordflow">goto</span> close_and_exit;
+<a name="l00731"></a>00731     }
+<a name="l00732"></a>00732 
+<a name="l00733"></a>00733     pinfo = plugin_info();
+<a name="l00734"></a>00734     <span class="keywordflow">if</span> (!pinfo) {
+<a name="l00735"></a>00735         fprintf(stderr, <span class="stringliteral">"ERROR: lms_plugin_info() returned NULL\n"</span>);
+<a name="l00736"></a>00736         <span class="keywordflow">goto</span> close_and_exit;
+<a name="l00737"></a>00737     }
+<a name="l00738"></a>00738 
+<a name="l00739"></a>00739     path_len = strlen(so_path) + 1;
+<a name="l00740"></a>00740     name_len = pinfo-&gt;<a class="code" href="structlms__plugin__info.html#fad60ec7f8d34b2082b353a03e2cb836">name</a> ? strlen(pinfo-&gt;<a class="code" href="structlms__plugin__info.html#fad60ec7f8d34b2082b353a03e2cb836">name</a>) + 1 : 0;
+<a name="l00741"></a>00741     desc_len = pinfo-&gt;<a class="code" href="structlms__plugin__info.html#2e1df9478dd1f9dc62e81e208a2ebd3e">description</a> ? strlen(pinfo-&gt;<a class="code" href="structlms__plugin__info.html#2e1df9478dd1f9dc62e81e208a2ebd3e">description</a>) + 1 : 0;
+<a name="l00742"></a>00742     ver_len = pinfo-&gt;<a class="code" href="structlms__plugin__info.html#032d3fd2490ad7907e1ea27abad59915">version</a> ? strlen(pinfo-&gt;<a class="code" href="structlms__plugin__info.html#032d3fd2490ad7907e1ea27abad59915">version</a>) + 1 : 0;
+<a name="l00743"></a>00743     uri_len = pinfo-&gt;<a class="code" href="structlms__plugin__info.html#8f5826185c7cb3a4155fca8683b817e2">uri</a> ? strlen(pinfo-&gt;<a class="code" href="structlms__plugin__info.html#8f5826185c7cb3a4155fca8683b817e2">uri</a>) + 1 : 0;
+<a name="l00744"></a>00744 
+<a name="l00745"></a>00745     cats_count = _lms_string_array_count(pinfo-&gt;<a class="code" href="structlms__plugin__info.html#d5fd907e4bcc553eb9474aa132435c9c">categories</a>, &amp;cats_size);
+<a name="l00746"></a>00746     authors_count = _lms_string_array_count(pinfo-&gt;<a class="code" href="structlms__plugin__info.html#5dd799fc0e3dd7e798f053ecf773e59a">authors</a>, &amp;authors_size);
+<a name="l00747"></a>00747 
+<a name="l00748"></a>00748     len = path_len + name_len + desc_len + ver_len + uri_len + cats_size +
+<a name="l00749"></a>00749         authors_size;
+<a name="l00750"></a>00750     ret = malloc(<span class="keyword">sizeof</span>(*ret) + len);
+<a name="l00751"></a>00751     <span class="keywordflow">if</span> (!ret) {
+<a name="l00752"></a>00752       fprintf(stderr, <span class="stringliteral">"ERROR: could not alloc %d bytes: %s"</span>,
+<a name="l00753"></a>00753               <span class="keyword">sizeof</span>(*ret) + len, strerror(errno));
+<a name="l00754"></a>00754       <span class="keywordflow">goto</span> close_and_exit;
+<a name="l00755"></a>00755     }
+<a name="l00756"></a>00756 
+<a name="l00757"></a>00757     len = 0;
+<a name="l00758"></a>00758 
+<a name="l00759"></a>00759     <span class="keywordflow">if</span> (cats_count) {
+<a name="l00760"></a>00760         ret-&gt;<a class="code" href="structlms__parser__info.html#7ec98aa66587df4215d9d2e1be1efc04">categories</a> = (<span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> *)
+<a name="l00761"></a>00761             ((<span class="keywordtype">char</span> *)ret + <span class="keyword">sizeof</span>(*ret) + len);
+<a name="l00762"></a>00762         _lms_string_array_copy(
+<a name="l00763"></a>00763             (<span class="keywordtype">char</span> **)ret-&gt;<a class="code" href="structlms__parser__info.html#7ec98aa66587df4215d9d2e1be1efc04">categories</a>, pinfo-&gt;<a class="code" href="structlms__plugin__info.html#d5fd907e4bcc553eb9474aa132435c9c">categories</a>, cats_count);
+<a name="l00764"></a>00764         len += cats_size;
+<a name="l00765"></a>00765     } <span class="keywordflow">else</span>
+<a name="l00766"></a>00766         ret-&gt;<a class="code" href="structlms__parser__info.html#7ec98aa66587df4215d9d2e1be1efc04">categories</a> = NULL;
+<a name="l00767"></a>00767 
+<a name="l00768"></a>00768     <span class="keywordflow">if</span> (authors_count) {
+<a name="l00769"></a>00769         ret-&gt;<a class="code" href="structlms__parser__info.html#c22d79b37c4c2d513eaeb3b618f524bf">authors</a> = (<span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> *)
+<a name="l00770"></a>00770             ((<span class="keywordtype">char</span> *)ret + <span class="keyword">sizeof</span>(*ret) + len);
+<a name="l00771"></a>00771         _lms_string_array_copy(
+<a name="l00772"></a>00772             (<span class="keywordtype">char</span> **)ret-&gt;<a class="code" href="structlms__parser__info.html#c22d79b37c4c2d513eaeb3b618f524bf">authors</a>, pinfo-&gt;<a class="code" href="structlms__plugin__info.html#5dd799fc0e3dd7e798f053ecf773e59a">authors</a>, authors_count);
+<a name="l00773"></a>00773         len += authors_size;
+<a name="l00774"></a>00774     } <span class="keywordflow">else</span>
+<a name="l00775"></a>00775         ret-&gt;<a class="code" href="structlms__parser__info.html#c22d79b37c4c2d513eaeb3b618f524bf">authors</a> = NULL;
+<a name="l00776"></a>00776 
+<a name="l00777"></a>00777     ret-&gt;<a class="code" href="structlms__parser__info.html#5ab9ec0ea57b30e14d5f6f671aac6590">path</a> = (<span class="keywordtype">char</span> *)ret + <span class="keyword">sizeof</span>(*ret) + len;
+<a name="l00778"></a>00778     memcpy((<span class="keywordtype">char</span> *)ret-&gt;<a class="code" href="structlms__parser__info.html#5ab9ec0ea57b30e14d5f6f671aac6590">path</a>, so_path, path_len);
+<a name="l00779"></a>00779     len += path_len;
+<a name="l00780"></a>00780 
+<a name="l00781"></a>00781     <span class="keywordflow">if</span> (pinfo-&gt;<a class="code" href="structlms__plugin__info.html#fad60ec7f8d34b2082b353a03e2cb836">name</a>) {
+<a name="l00782"></a>00782         ret-&gt;<a class="code" href="structlms__parser__info.html#8c1195dd47805f8061b3c69691d60029">name</a> = (<span class="keywordtype">char</span> *)ret + <span class="keyword">sizeof</span>(*ret) + len;
+<a name="l00783"></a>00783         memcpy((<span class="keywordtype">char</span> *)ret-&gt;<a class="code" href="structlms__parser__info.html#8c1195dd47805f8061b3c69691d60029">name</a>, pinfo-&gt;<a class="code" href="structlms__plugin__info.html#fad60ec7f8d34b2082b353a03e2cb836">name</a>, name_len);
+<a name="l00784"></a>00784         len += name_len;
+<a name="l00785"></a>00785     } <span class="keywordflow">else</span>
+<a name="l00786"></a>00786         ret-&gt;<a class="code" href="structlms__parser__info.html#8c1195dd47805f8061b3c69691d60029">name</a> = NULL;
+<a name="l00787"></a>00787 
+<a name="l00788"></a>00788     <span class="keywordflow">if</span> (pinfo-&gt;<a class="code" href="structlms__plugin__info.html#2e1df9478dd1f9dc62e81e208a2ebd3e">description</a>) {
+<a name="l00789"></a>00789         ret-&gt;<a class="code" href="structlms__parser__info.html#46ca7f8f9d14332d96c34eec8425f92a">description</a> = (<span class="keywordtype">char</span> *)ret + <span class="keyword">sizeof</span>(*ret) + len;
+<a name="l00790"></a>00790         memcpy((<span class="keywordtype">char</span> *)ret-&gt;<a class="code" href="structlms__parser__info.html#46ca7f8f9d14332d96c34eec8425f92a">description</a>, pinfo-&gt;<a class="code" href="structlms__plugin__info.html#2e1df9478dd1f9dc62e81e208a2ebd3e">description</a>, desc_len);
+<a name="l00791"></a>00791         len += desc_len;
+<a name="l00792"></a>00792     } <span class="keywordflow">else</span>
+<a name="l00793"></a>00793         ret-&gt;<a class="code" href="structlms__parser__info.html#46ca7f8f9d14332d96c34eec8425f92a">description</a> = NULL;
+<a name="l00794"></a>00794 
+<a name="l00795"></a>00795     <span class="keywordflow">if</span> (pinfo-&gt;<a class="code" href="structlms__plugin__info.html#032d3fd2490ad7907e1ea27abad59915">version</a>) {
+<a name="l00796"></a>00796         ret-&gt;<a class="code" href="structlms__parser__info.html#49c7d15bae321ad3c899823f4348cf59">version</a> = (<span class="keywordtype">char</span> *)ret + <span class="keyword">sizeof</span>(*ret) + len;
+<a name="l00797"></a>00797         memcpy((<span class="keywordtype">char</span> *)ret-&gt;<a class="code" href="structlms__parser__info.html#49c7d15bae321ad3c899823f4348cf59">version</a>, pinfo-&gt;<a class="code" href="structlms__plugin__info.html#032d3fd2490ad7907e1ea27abad59915">version</a>, ver_len);
+<a name="l00798"></a>00798         len += ver_len;
+<a name="l00799"></a>00799     } <span class="keywordflow">else</span>
+<a name="l00800"></a>00800         ret-&gt;<a class="code" href="structlms__parser__info.html#49c7d15bae321ad3c899823f4348cf59">version</a> = NULL;
+<a name="l00801"></a>00801 
+<a name="l00802"></a>00802     <span class="keywordflow">if</span> (pinfo-&gt;<a class="code" href="structlms__plugin__info.html#8f5826185c7cb3a4155fca8683b817e2">uri</a>) {
+<a name="l00803"></a>00803         ret-&gt;<a class="code" href="structlms__parser__info.html#3f567c146a83ca281ae431e060ab55a9">uri</a> = (<span class="keywordtype">char</span> *)ret + <span class="keyword">sizeof</span>(*ret) + len;
+<a name="l00804"></a>00804         memcpy((<span class="keywordtype">char</span> *)ret-&gt;<a class="code" href="structlms__parser__info.html#3f567c146a83ca281ae431e060ab55a9">uri</a>, pinfo-&gt;<a class="code" href="structlms__plugin__info.html#8f5826185c7cb3a4155fca8683b817e2">uri</a>, uri_len);
+<a name="l00805"></a>00805         len += uri_len;
+<a name="l00806"></a>00806     } <span class="keywordflow">else</span>
+<a name="l00807"></a>00807         ret-&gt;<a class="code" href="structlms__parser__info.html#3f567c146a83ca281ae431e060ab55a9">uri</a> = NULL;
+<a name="l00808"></a>00808 
+<a name="l00809"></a>00809   close_and_exit:
+<a name="l00810"></a>00810     dlclose(dl_handle);
+<a name="l00811"></a>00811     <span class="keywordflow">return</span> ret;
+<a name="l00812"></a>00812 }
+<a name="l00813"></a>00813 
+<a name="l00823"></a>00823 <span class="keyword">struct </span><a class="code" href="structlms__parser__info.html">lms_parser_info</a> *
+<a name="l00824"></a><a class="code" href="lightmediascanner_8h.html#85b153a95dafb48c419dc1419e323567">00824</a> <a class="code" href="lightmediascanner_8c.html#66457cf4ec2ef4a50bd899f99e914650">lms_parser_info_find</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name)
+<a name="l00825"></a>00825 {
+<a name="l00826"></a>00826     <span class="keywordtype">char</span> so_path[PATH_MAX];
+<a name="l00827"></a>00827 
+<a name="l00828"></a>00828     <span class="keywordflow">if</span> (!name)
+<a name="l00829"></a>00829         <span class="keywordflow">return</span> NULL;
+<a name="l00830"></a>00830 
+<a name="l00831"></a>00831     <span class="keywordflow">if</span> (!lms_parser_find(so_path, <span class="keyword">sizeof</span>(so_path), name))
+<a name="l00832"></a>00832         <span class="keywordflow">return</span> NULL;
+<a name="l00833"></a>00833 
+<a name="l00834"></a>00834     <span class="keywordflow">return</span> <a class="code" href="lightmediascanner_8c.html#0b95c1ed1a71c241bb887ee672f740d8">lms_parser_info</a>(so_path);
+<a name="l00835"></a>00835 }
+<a name="l00836"></a>00836 
+<a name="l00842"></a>00842 <span class="keywordtype">void</span>
+<a name="l00843"></a><a class="code" href="lightmediascanner_8h.html#f071ee2184c0d4d69c85cccd09e08b26">00843</a> <a class="code" href="lightmediascanner_8c.html#508ef3c49f7f4729b9e5a5711b66bda1">lms_parser_info_free</a>(<span class="keyword">struct</span> <a class="code" href="structlms__parser__info.html">lms_parser_info</a> *info)
+<a name="l00844"></a>00844 {
+<a name="l00845"></a>00845     free(info);
+<a name="l00846"></a>00846 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner_8c.html b/www/api/lightmediascanner_8c.html
new file mode 100644 (file)
index 0000000..9941142
--- /dev/null
@@ -0,0 +1,421 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner.c File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>src/lib/lightmediascanner.c File Reference</h1><code>#include &lt;dlfcn.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;string.h&gt;</code><br>
+<code>#include &lt;dirent.h&gt;</code><br>
+<code>#include &lt;errno.h&gt;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>&quot;</code><br>
+
+<p>
+<div class="dynheader">
+Include dependency graph for lightmediascanner.c:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<a href="lightmediascanner_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8c.html#c2843894cca63ec0089c381e69d1d81a">DEFAULT_SLAVE_TIMEOUT</a>&nbsp;&nbsp;&nbsp;1000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8c.html#6d0480dc76aba4a2291d79ac2466fc59">DEFAULT_COMMIT_INTERVAL</a>&nbsp;&nbsp;&nbsp;100</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">lms_new</a> (const char *db_path)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lms_free</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8c.html#668e706f6d5eae3ba5e36ff4db2ae514">lms_set_progress_callback</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, <a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> cb, const void *data, <a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a> free_data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__plugin.html">lms_plugin_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">lms_parser_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *so_path)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__plugin.html">lms_plugin_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">lms_parser_find_and_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lms_parser_del_int</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, int i)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g1da5e5f834e0289ea49a0fbc2280feda">lms_parser_del</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *handle)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">lms_is_processing</a> (const <a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lms_get_db_path</a> (const <a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lms_get_slave_timeout</a> (const <a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lms_set_slave_timeout</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, int ms)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lms_get_commit_interval</a> (const <a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lms_set_commit_interval</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, unsigned int transactions)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g4fd56e209d415b27466274726cc7d59f">lms_charset_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *charset)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">lms_charset_del</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *charset)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8c.html#7e27ccbd0abfd5d112586a00fd424db9">lms_parsers_list</a> (int(*cb)(void *data, const char *path), const void *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8c.html#24f4c44982b286dc3ca451ca1acb6123">lms_parsers_list_by_category</a> (const char *category, int(*cb)(void *data, const char *path, const struct <a class="el" href="structlms__parser__info.html">lms_parser_info</a> *info), const void *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__parser__info.html">lms_parser_info</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8c.html#0b95c1ed1a71c241bb887ee672f740d8">lms_parser_info</a> (const char *so_path)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__parser__info.html">lms_parser_info</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8c.html#66457cf4ec2ef4a50bd899f99e914650">lms_parser_info_find</a> (const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8c.html#508ef3c49f7f4729b9e5a5711b66bda1">lms_parser_info_free</a> (struct <a class="el" href="structlms__parser__info.html">lms_parser_info</a> *info)</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="6d0480dc76aba4a2291d79ac2466fc59"></a><!-- doxytag: member="lightmediascanner.c::DEFAULT_COMMIT_INTERVAL" ref="6d0480dc76aba4a2291d79ac2466fc59" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEFAULT_COMMIT_INTERVAL&nbsp;&nbsp;&nbsp;100          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00037">37</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00121">lms_new()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="c2843894cca63ec0089c381e69d1d81a"></a><!-- doxytag: member="lightmediascanner.c::DEFAULT_SLAVE_TIMEOUT" ref="c2843894cca63ec0089c381e69d1d81a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEFAULT_SLAVE_TIMEOUT&nbsp;&nbsp;&nbsp;1000          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copyright (C) 2007 by INdT<p>
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00036">36</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00121">lms_new()</a>.</p>
+
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="e6ccb942742cf65cc1cf866aceb4bddf"></a><!-- doxytag: member="lightmediascanner.c::lms_parser_del_int" ref="e6ccb942742cf65cc1cf866aceb4bddf" args="(lms_t *lms, int i)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_parser_del_int           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>i</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00294">294</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00334">lms_parser_del()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="0b95c1ed1a71c241bb887ee672f740d8"></a><!-- doxytag: member="lightmediascanner.c::lms_parser_info" ref="0b95c1ed1a71c241bb887ee672f740d8" args="(const char *so_path)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__parser__info.html">lms_parser_info</a>* <a class="el" href="structlms__parser__info.html">lms_parser_info</a>           </td>
+          <td>(</td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>so_path</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [read]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get <a class="el" href="structparser.html">parser</a> information.<p>
+Information can be used to let user choose parsers on Graphical User Interfaces.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>so_path</em>&nbsp;</td><td>full path to module. </td></tr>
+  </table>
+</dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="lightmediascanner_8c.html#66457cf4ec2ef4a50bd899f99e914650">lms_parser_info_find()</a> </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00699">699</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner_8h-source.html#l00204">lms_parser_info::authors</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00182">lms_plugin_info::authors</a>, <a class="el" href="lightmediascanner_8h-source.html#l00201">lms_parser_info::categories</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00179">lms_plugin_info::categories</a>, <a class="el" href="lightmediascanner_8h-source.html#l00202">lms_parser_info::description</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00180">lms_plugin_info::description</a>, <a class="el" href="lightmediascanner_8h-source.html#l00200">lms_parser_info::name</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00178">lms_plugin_info::name</a>, <a class="el" href="lightmediascanner_8h-source.html#l00199">lms_parser_info::path</a>, <a class="el" href="lightmediascanner_8h-source.html#l00205">lms_parser_info::uri</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00183">lms_plugin_info::uri</a>, <a class="el" href="lightmediascanner_8h-source.html#l00203">lms_parser_info::version</a>, and <a class="el" href="lightmediascanner__plugin_8h-source.html#l00181">lms_plugin_info::version</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00824">lms_parser_info_find()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="66457cf4ec2ef4a50bd899f99e914650"></a><!-- doxytag: member="lightmediascanner.c::lms_parser_info_find" ref="66457cf4ec2ef4a50bd899f99e914650" args="(const char *name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__parser__info.html">lms_parser_info</a>* lms_parser_info_find           </td>
+          <td>(</td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>name</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [read]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Find <a class="el" href="structparser.html">parser</a> by name and get its information.<p>
+Information can be used to let user choose parsers on Graphical User Interfaces.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>name of .so to find the whole so_path and retrieve information. </td></tr>
+  </table>
+</dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="lightmediascanner_8c.html#0b95c1ed1a71c241bb887ee672f740d8">lms_parser_info()</a> </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00824">824</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner_8c-source.html#l00699">lms_parser_info()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="508ef3c49f7f4729b9e5a5711b66bda1"></a><!-- doxytag: member="lightmediascanner.c::lms_parser_info_free" ref="508ef3c49f7f4729b9e5a5711b66bda1" args="(struct lms_parser_info *info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void lms_parser_info_free           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structlms__parser__info.html">lms_parser_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free previously returned information.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>it is safe to call with NULL. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00843">843</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="7e27ccbd0abfd5d112586a00fd424db9"></a><!-- doxytag: member="lightmediascanner.c::lms_parsers_list" ref="7e27ccbd0abfd5d112586a00fd424db9" args="(int(*cb)(void *data, const char *path), const void *data)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void lms_parsers_list           </td>
+          <td>(</td>
+          <td class="paramtype">int(*)(void *data, const char *path)&nbsp;</td>
+          <td class="paramname"> <em>cb</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&nbsp;</td>
+          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+List all known parsers on the system.<p>
+No information is retrieved, you might like to call <a class="el" href="lightmediascanner_8c.html#0b95c1ed1a71c241bb887ee672f740d8">lms_parser_info()</a> on the callback path.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>cb</em>&nbsp;</td><td>function to call for each path found. If it returns 0, it stops iteraction. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>extra data to pass to <em>cb</em> on every call. </td></tr>
+  </table>
+</dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00540">540</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00629">lms_parsers_list_by_category()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="24f4c44982b286dc3ca451ca1acb6123"></a><!-- doxytag: member="lightmediascanner.c::lms_parsers_list_by_category" ref="24f4c44982b286dc3ca451ca1acb6123" args="(const char *category, int(*cb)(void *data, const char *path, const struct lms_parser_info *info), const void *data)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void lms_parsers_list_by_category           </td>
+          <td>(</td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>category</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int(*)(void *data, const char *path, const struct <a class="el" href="structlms__parser__info.html">lms_parser_info</a> *info)&nbsp;</td>
+          <td class="paramname"> <em>cb</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&nbsp;</td>
+          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+List all known parsers of a given category.<p>
+Since we need information to figure out <a class="el" href="structparser.html">parser</a> category, these are passed as argument to callback, but you should NOT modify or reference it after callback function returns since it will be released after that.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>category</em>&nbsp;</td><td>which category to match. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>cb</em>&nbsp;</td><td>function to call for each path found. If it returns 0, it stops iteraction. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>extra data to pass to <em>cb</em> on every call. </td></tr>
+  </table>
+</dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00629">629</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner_8c-source.html#l00540">lms_parsers_list()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="668e706f6d5eae3ba5e36ff4db2ae514"></a><!-- doxytag: member="lightmediascanner.c::lms_set_progress_callback" ref="668e706f6d5eae3ba5e36ff4db2ae514" args="(lms_t *lms, lms_progress_callback_t cb, const void *data, lms_free_callback_t free_data)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void lms_set_progress_callback           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a>&nbsp;</td>
+          <td class="paramname"> <em>cb</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&nbsp;</td>
+          <td class="paramname"> <em>data</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a>&nbsp;</td>
+          <td class="paramname"> <em>free_data</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set callback to be used to report progress (check and process).<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>cb</em>&nbsp;</td><td>function to call when files are processed or NULL to unset. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>data to give to cb when it's called, may be NULL. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>free_data</em>&nbsp;</td><td>function to call to free <em>data</em> when <a class="el" href="structlms.html">lms</a> is freed or new progress data is set. </td></tr>
+  </table>
+</dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00195">195</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00083">lms::cb</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00084">lms::data</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00085">lms::free_data</a>, and <a class="el" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">lms::progress</a>.</p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner_8c_24f4c44982b286dc3ca451ca1acb6123_cgraph.dot b/www/api/lightmediascanner_8c_24f4c44982b286dc3ca451ca1acb6123_cgraph.dot
new file mode 100644 (file)
index 0000000..90db537
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_parsers_list_by_category",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_parsers_list",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8c.html#7e27ccbd0abfd5d112586a00fd424db9"];
+}
diff --git a/www/api/lightmediascanner_8c_24f4c44982b286dc3ca451ca1acb6123_cgraph.md5 b/www/api/lightmediascanner_8c_24f4c44982b286dc3ca451ca1acb6123_cgraph.md5
new file mode 100644 (file)
index 0000000..8f2d976
--- /dev/null
@@ -0,0 +1 @@
+6cbda567f6329b3dbe1e0ab331e3af46
\ No newline at end of file
diff --git a/www/api/lightmediascanner_8c_66457cf4ec2ef4a50bd899f99e914650_cgraph.dot b/www/api/lightmediascanner_8c_66457cf4ec2ef4a50bd899f99e914650_cgraph.dot
new file mode 100644 (file)
index 0000000..e12d7a4
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_parser_info_find",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_parser_info",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8c.html#0b95c1ed1a71c241bb887ee672f740d8"];
+}
diff --git a/www/api/lightmediascanner_8c_66457cf4ec2ef4a50bd899f99e914650_cgraph.md5 b/www/api/lightmediascanner_8c_66457cf4ec2ef4a50bd899f99e914650_cgraph.md5
new file mode 100644 (file)
index 0000000..92e0681
--- /dev/null
@@ -0,0 +1 @@
+f04c80800232ad6da160032dcde58bae
\ No newline at end of file
diff --git a/www/api/lightmediascanner_8c__incl.dot b/www/api/lightmediascanner_8c__incl.dot
new file mode 100644 (file)
index 0000000..115362a
--- /dev/null
@@ -0,0 +1,41 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="dlfcn.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="stdio.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="stdlib.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="string.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="dirent.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="errno.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="lightmediascanner.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8h.html"];
+  Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="lightmediascanner_private.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__private_8h.html"];
+  Node9 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="lightmediascanner_plugin.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__plugin_8h.html"];
+  Node10 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="lightmediascanner_charset_conv.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__charset__conv_8h.html"];
+  Node10 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="sqlite3.h",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="poll.h",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="limits.h",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}
diff --git a/www/api/lightmediascanner_8c__incl.md5 b/www/api/lightmediascanner_8c__incl.md5
new file mode 100644 (file)
index 0000000..6ae337a
--- /dev/null
@@ -0,0 +1 @@
+fdf1ea4f9f69d259b7d76a374b82e729
\ No newline at end of file
diff --git a/www/api/lightmediascanner_8h-source.html b/www/api/lightmediascanner_8h-source.html
new file mode 100644 (file)
index 0000000..54ab7c7
--- /dev/null
@@ -0,0 +1,139 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>src/lib/lightmediascanner.h</h1><a href="lightmediascanner_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00110"></a>00110 <span class="preprocessor">#ifndef _LIGHTMEDIASCANNER_H_</span>
+<a name="l00111"></a><a class="code" href="lightmediascanner_8h.html#e97a674be7c85b0914a6acbafe994998">00111</a> <span class="preprocessor"></span><span class="preprocessor">#define _LIGHTMEDIASCANNER_H_ 1</span>
+<a name="l00112"></a>00112 <span class="preprocessor"></span>
+<a name="l00113"></a>00113 <span class="preprocessor">#ifdef API</span>
+<a name="l00114"></a>00114 <span class="preprocessor"></span><span class="preprocessor">#undef API</span>
+<a name="l00115"></a>00115 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00116"></a>00116 <span class="preprocessor"></span>
+<a name="l00117"></a>00117 <span class="preprocessor">#ifdef __GNUC__</span>
+<a name="l00118"></a>00118 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt;= 4</span>
+<a name="l00119"></a>00119 <span class="preprocessor"></span><span class="preprocessor">#  define API __attribute__ ((visibility("default")))</span>
+<a name="l00120"></a>00120 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NULL_TERMINATED __attribute__((__sentinel__))</span>
+<a name="l00121"></a>00121 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00122"></a>00122 <span class="preprocessor"></span><span class="preprocessor">#  define API</span>
+<a name="l00123"></a>00123 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NULL_TERMINATED</span>
+<a name="l00124"></a>00124 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00125"></a>00125 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt; 2 || (__GNUC__ == 2 &amp;&amp; __GNUC_MINOR__ &gt;= 96)</span>
+<a name="l00126"></a>00126 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_PURE __attribute__((__pure__))</span>
+<a name="l00127"></a>00127 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_MALLOC __attribute__((__malloc__))</span>
+<a name="l00128"></a>00128 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_CONST __attribute__((__const__))</span>
+<a name="l00129"></a>00129 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_UNUSED __attribute__((__unused__))</span>
+<a name="l00130"></a>00130 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00131"></a>00131 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_PURE</span>
+<a name="l00132"></a>00132 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_MALLOC</span>
+<a name="l00133"></a>00133 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NORETURN</span>
+<a name="l00134"></a>00134 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_CONST</span>
+<a name="l00135"></a>00135 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_UNUSED</span>
+<a name="l00136"></a>00136 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00137"></a>00137 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt; 3 || (__GNUC__ == 3 &amp;&amp; __GNUC_MINOR__ &gt;= 4)</span>
+<a name="l00138"></a>00138 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_WARN_UNUSED_RESULT __attribute__((warn_unused_result))</span>
+<a name="l00139"></a>00139 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))</span>
+<a name="l00140"></a>00140 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00141"></a>00141 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_WARN_UNUSED_RESULT</span>
+<a name="l00142"></a>00142 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00143"></a>00143 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00144"></a>00144 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00145"></a><a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">00145</a> <span class="preprocessor"></span><span class="preprocessor">#  define API</span>
+<a name="l00146"></a><a class="code" href="lightmediascanner_8h.html#3c631eb7d32b61d70bfc615ae54e5552">00146</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NULL_TERMINATED</span>
+<a name="l00147"></a><a class="code" href="lightmediascanner_8h.html#7a9a21d60c8e567c8110c8e3069f8201">00147</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_PURE</span>
+<a name="l00148"></a><a class="code" href="lightmediascanner_8h.html#2213ea4dca0e242f957f63988caab768">00148</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_MALLOC</span>
+<a name="l00149"></a><a class="code" href="lightmediascanner_8h.html#ccce66c7f9844ae805b83bee1b9c32b5">00149</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_CONST</span>
+<a name="l00150"></a><a class="code" href="lightmediascanner_8h.html#80a4050221a914ea58d5799f13109ebb">00150</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_UNUSED</span>
+<a name="l00151"></a><a class="code" href="lightmediascanner_8h.html#34c563f40a0f86e597c51f1556669521">00151</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_WARN_UNUSED_RESULT</span>
+<a name="l00152"></a><a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">00152</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00153"></a>00153 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00154"></a>00154 <span class="preprocessor"></span>
+<a name="l00155"></a>00155 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00156"></a>00156 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+<a name="l00157"></a>00157 <span class="preprocessor">#endif</span>
+<a name="l00158"></a>00158 <span class="preprocessor"></span>
+<a name="l00164"></a><a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">00164</a>     <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structlms.html">lms</a> <a class="code" href="structlms.html">lms_t</a>;
+<a name="l00165"></a><a class="code" href="lightmediascanner_8h.html#ccedd0cd6d535dcfee399957033074fd">00165</a>     <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structlms__plugin.html">lms_plugin</a> <a class="code" href="structlms__plugin.html">lms_plugin_t</a>;
+<a name="l00166"></a>00166 
+<a name="l00167"></a><a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">00167</a>     <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00168"></a><a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370204315e58ce4b7dfa6421b4d1556655d">00168</a>         <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370204315e58ce4b7dfa6421b4d1556655d">LMS_PROGRESS_STATUS_UP_TO_DATE</a>,
+<a name="l00169"></a><a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">00169</a>         <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">LMS_PROGRESS_STATUS_PROCESSED</a>,
+<a name="l00170"></a><a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11">00170</a>         <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11">LMS_PROGRESS_STATUS_DELETED</a>,
+<a name="l00171"></a><a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152">00171</a>         <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152">LMS_PROGRESS_STATUS_KILLED</a>,
+<a name="l00172"></a><a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">00172</a>         <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">LMS_PROGRESS_STATUS_ERROR_PARSE</a>,
+<a name="l00173"></a><a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082">00173</a>         <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082">LMS_PROGRESS_STATUS_ERROR_COMM</a>,
+<a name="l00174"></a><a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d23704d4c093ecf32b2eba688a42908aa338c">00174</a>         <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d23704d4c093ecf32b2eba688a42908aa338c">LMS_PROGRESS_STATUS_SKIPPED</a>
+<a name="l00175"></a>00175     } <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lms_progress_status_t</a>;
+<a name="l00176"></a>00176 
+<a name="l00177"></a><a class="code" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">00177</a>     <span class="keyword">typedef</span> void (*<a class="code" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a>)(<span class="keywordtype">void</span> *data);
+<a name="l00178"></a><a class="code" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">00178</a>     <span class="keyword">typedef</span> void (*<a class="code" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a>)(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> path_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lms_progress_status_t</a> status, <span class="keywordtype">void</span> *data);
+<a name="l00179"></a>00179 
+<a name="l00180"></a>00180     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">lms_new</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *db_path) <a class="code" href="lightmediascanner_8h.html#2213ea4dca0e242f957f63988caab768">GNUC_MALLOC</a> <a class="code" href="lightmediascanner_8h.html#34c563f40a0f86e597c51f1556669521">GNUC_WARN_UNUSED_RESULT</a>;
+<a name="l00181"></a>00181     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lms_free</a>(<a class="code" href="structlms.html">lms_t</a> *lms) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00182"></a>00182     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner_8h.html#7d2b81cfe07a8cce4c2bef705e7529f4">lms_process</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00183"></a>00183     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner_8h.html#c5eda23c23b2ea76f001ac994c2ba9e2">lms_process_single_process</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00184"></a>00184     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner_8h.html#5b70063cf19648de70bb145404aa3d0b">lms_check</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00185"></a>00185     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner_8h.html#bfd6888e606654c585e41aa946637432">lms_check_single_process</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00186"></a>00186     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="lightmediascanner_8h.html#30aa1e83907fc1049d2adccb28eef489">lms_stop_processing</a>(<a class="code" href="structlms.html">lms_t</a> *lms) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00187"></a>00187     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lms_get_db_path</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *lms) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00188"></a>00188     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">lms_is_processing</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *lms) <a class="code" href="lightmediascanner_8h.html#7a9a21d60c8e567c8110c8e3069f8201">GNUC_PURE</a> <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00189"></a>00189     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lms_get_slave_timeout</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *lms) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00190"></a>00190     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lms_set_slave_timeout</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keywordtype">int</span> ms) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00191"></a>00191     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lms_get_commit_interval</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *lms) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00192"></a>00192     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lms_set_commit_interval</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> transactions) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00193"></a>00193     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="lightmediascanner_8c.html#668e706f6d5eae3ba5e36ff4db2ae514">lms_set_progress_callback</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <a class="code" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> cb, <span class="keyword">const</span> <span class="keywordtype">void</span> *data, <a class="code" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a> free_data) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00194"></a>00194 
+<a name="l00195"></a>00195 
+<a name="l00196"></a>00196     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="lightmediascanner_8c.html#7e27ccbd0abfd5d112586a00fd424db9">lms_parsers_list</a>(<span class="keywordtype">int</span> (*cb)(<span class="keywordtype">void</span> *data, <span class="keyword">const</span> <span class="keywordtype">char</span> *path), <span class="keyword">const</span> <span class="keywordtype">void</span> *data);
+<a name="l00197"></a>00197 
+<a name="l00198"></a><a class="code" href="structlms__parser__info.html">00198</a>     <span class="keyword">struct </span><a class="code" href="structlms__parser__info.html">lms_parser_info</a> {
+<a name="l00199"></a><a class="code" href="structlms__parser__info.html#5ab9ec0ea57b30e14d5f6f671aac6590">00199</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> *path;
+<a name="l00200"></a><a class="code" href="structlms__parser__info.html#8c1195dd47805f8061b3c69691d60029">00200</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__parser__info.html#8c1195dd47805f8061b3c69691d60029">name</a>;
+<a name="l00201"></a><a class="code" href="structlms__parser__info.html#7ec98aa66587df4215d9d2e1be1efc04">00201</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> *<a class="code" href="structlms__parser__info.html#7ec98aa66587df4215d9d2e1be1efc04">categories</a>;
+<a name="l00202"></a><a class="code" href="structlms__parser__info.html#46ca7f8f9d14332d96c34eec8425f92a">00202</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__parser__info.html#46ca7f8f9d14332d96c34eec8425f92a">description</a>;
+<a name="l00203"></a><a class="code" href="structlms__parser__info.html#49c7d15bae321ad3c899823f4348cf59">00203</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__parser__info.html#49c7d15bae321ad3c899823f4348cf59">version</a>;
+<a name="l00204"></a><a class="code" href="structlms__parser__info.html#c22d79b37c4c2d513eaeb3b618f524bf">00204</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keyword">const</span> *<a class="code" href="structlms__parser__info.html#c22d79b37c4c2d513eaeb3b618f524bf">authors</a>;
+<a name="l00205"></a><a class="code" href="structlms__parser__info.html#3f567c146a83ca281ae431e060ab55a9">00205</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__parser__info.html#3f567c146a83ca281ae431e060ab55a9">uri</a>;
+<a name="l00206"></a>00206     };
+<a name="l00207"></a>00207 
+<a name="l00208"></a>00208     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keyword">struct </span><a class="code" href="structlms__parser__info.html">lms_parser_info</a> *<a class="code" href="lightmediascanner_8c.html#0b95c1ed1a71c241bb887ee672f740d8">lms_parser_info</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *so_path);
+<a name="l00209"></a>00209     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keyword">struct </span><a class="code" href="structlms__parser__info.html">lms_parser_info</a> *<a class="code" href="lightmediascanner_8c.html#66457cf4ec2ef4a50bd899f99e914650">lms_parser_info_find</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__parser__info.html#8c1195dd47805f8061b3c69691d60029">name</a>);
+<a name="l00210"></a>00210     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="lightmediascanner_8c.html#508ef3c49f7f4729b9e5a5711b66bda1">lms_parser_info_free</a>(<span class="keyword">struct</span> <a class="code" href="structlms__parser__info.html">lms_parser_info</a> *info);
+<a name="l00211"></a>00211 
+<a name="l00212"></a>00212     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="lightmediascanner_8c.html#24f4c44982b286dc3ca451ca1acb6123">lms_parsers_list_by_category</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *category, <span class="keywordtype">int</span> (*cb)(<span class="keywordtype">void</span> *data, <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__parser__info.html">lms_parser_info</a> *info), <span class="keyword">const</span> <span class="keywordtype">void</span> *data);
+<a name="l00213"></a>00213 
+<a name="l00214"></a>00214     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *<a class="code" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">lms_parser_add</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *so_path) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00215"></a>00215     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *<a class="code" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">lms_parser_find_and_add</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__parser__info.html#8c1195dd47805f8061b3c69691d60029">name</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00216"></a>00216     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g1da5e5f834e0289ea49a0fbc2280feda">lms_parser_del</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *handle) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00217"></a>00217 
+<a name="l00218"></a>00218     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g4fd56e209d415b27466274726cc7d59f">lms_charset_add</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00219"></a>00219     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">lms_charset_del</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00220"></a>00220 
+<a name="l00221"></a>00221 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00222"></a>00222 <span class="preprocessor"></span>}
+<a name="l00223"></a>00223 <span class="preprocessor">#endif</span>
+<a name="l00224"></a>00224 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_H_ */</span>
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner_8h.html b/www/api/lightmediascanner_8h.html
new file mode 100644 (file)
index 0000000..0daf1d0
--- /dev/null
@@ -0,0 +1,935 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>src/lib/lightmediascanner.h File Reference</h1>
+<p>
+<div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<a href="lightmediascanner_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__parser__info.html">lms_parser_info</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#e97a674be7c85b0914a6acbafe994998">_LIGHTMEDIASCANNER_H_</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#3c631eb7d32b61d70bfc615ae54e5552">GNUC_NULL_TERMINATED</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#7a9a21d60c8e567c8110c8e3069f8201">GNUC_PURE</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#2213ea4dca0e242f957f63988caab768">GNUC_MALLOC</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#ccce66c7f9844ae805b83bee1b9c32b5">GNUC_CONST</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#80a4050221a914ea58d5799f13109ebb">GNUC_UNUSED</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#34c563f40a0f86e597c51f1556669521">GNUC_WARN_UNUSED_RESULT</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(...)</td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structlms.html">lms</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structlms__plugin.html">lms_plugin</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#ccedd0cd6d535dcfee399957033074fd">lms_plugin_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a> )(void *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> )(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *path, int path_len, <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lms_progress_status_t</a> status, void *data)</td></tr>
+
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lms_progress_status_t</a> { <br>
+&nbsp;&nbsp;<a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370204315e58ce4b7dfa6421b4d1556655d">LMS_PROGRESS_STATUS_UP_TO_DATE</a>, 
+<a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">LMS_PROGRESS_STATUS_PROCESSED</a>, 
+<a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11">LMS_PROGRESS_STATUS_DELETED</a>, 
+<a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152">LMS_PROGRESS_STATUS_KILLED</a>, 
+<br>
+&nbsp;&nbsp;<a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">LMS_PROGRESS_STATUS_ERROR_PARSE</a>, 
+<a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082">LMS_PROGRESS_STATUS_ERROR_COMM</a>, 
+<a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d23704d4c093ecf32b2eba688a42908aa338c">LMS_PROGRESS_STATUS_SKIPPED</a>
+<br>
+ }</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="structlms.html">lms_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">lms_new</a> (const char *db_path) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lms_free</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#7d2b81cfe07a8cce4c2bef705e7529f4">lms_process</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *top_path) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#c5eda23c23b2ea76f001ac994c2ba9e2">lms_process_single_process</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *top_path) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#5b70063cf19648de70bb145404aa3d0b">lms_check</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *top_path) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#bfd6888e606654c585e41aa946637432">lms_check_single_process</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *top_path) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int API <br class="typebreak">
+int API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#30aa1e83907fc1049d2adccb28eef489">lms_stop_processing</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lms_get_db_path</a> (const <a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">lms_is_processing</a> (const <a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>) GNUC_PURE GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lms_get_slave_timeout</a> (const <a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lms_set_slave_timeout</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, int ms) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lms_get_commit_interval</a> (const <a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lms_set_commit_interval</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, unsigned int transactions) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#d2da241599f7f576670d64184f972c43">lms_set_progress_callback</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, <a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> cb, const void *data, <a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a> free_data) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#ebe19263efa873f4629a18e77924bfaf">lms_parsers_list</a> (int(*cb)(void *data, const char *path), const void *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API struct <a class="el" href="structlms__parser__info.html">lms_parser_info</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#bda4586257139ef13260e3fe3bfd1b77">lms_parser_info</a> (const char *so_path)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API struct <a class="el" href="structlms__parser__info.html">lms_parser_info</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#85b153a95dafb48c419dc1419e323567">lms_parser_info_find</a> (const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#f071ee2184c0d4d69c85cccd09e08b26">lms_parser_info_free</a> (struct <a class="el" href="structlms__parser__info.html">lms_parser_info</a> *info)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#f6dfb5e9ed76e132ee7f45e7fe26415e">lms_parsers_list_by_category</a> (const char *category, int(*cb)(void *data, const char *path, const struct <a class="el" href="structlms__parser__info.html">lms_parser_info</a> *info), const void *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#ce55a5c9cc767b96fa6f24b77bebc7c3">lms_parser_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *so_path) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API <br class="typebreak">
+<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#e48d0483903bbb9604d14b44f7c569d9">lms_parser_find_and_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *name) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API <br class="typebreak">
+<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#5ba173b12c355bbdf7913bfff0ff6415">lms_parser_del</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *handle) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API <br class="typebreak">
+<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API int API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#03afcd1e04665bdaebe73d9f6cc20553">lms_charset_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *charset) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API <br class="typebreak">
+<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API int API int <br class="typebreak">
+API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#35fc2de4828878b9dec07e8edda8a5e2">lms_charset_del</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *charset) GNUC_NON_NULL(1</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="e97a674be7c85b0914a6acbafe994998"></a><!-- doxytag: member="lightmediascanner.h::_LIGHTMEDIASCANNER_H_" ref="e97a674be7c85b0914a6acbafe994998" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _LIGHTMEDIASCANNER_H_&nbsp;&nbsp;&nbsp;1          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00111">111</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="d8ce4efaa307683d3d763b37b4711c53"></a><!-- doxytag: member="lightmediascanner.h::API" ref="d8ce4efaa307683d3d763b37b4711c53" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define API          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00145">145</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="ccce66c7f9844ae805b83bee1b9c32b5"></a><!-- doxytag: member="lightmediascanner.h::GNUC_CONST" ref="ccce66c7f9844ae805b83bee1b9c32b5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_CONST          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00149">149</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="2213ea4dca0e242f957f63988caab768"></a><!-- doxytag: member="lightmediascanner.h::GNUC_MALLOC" ref="2213ea4dca0e242f957f63988caab768" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_MALLOC          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00148">148</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_NON_NULL          </td>
+          <td>(</td>
+          <td class="paramtype"> <em>...</em>&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00152">152</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="3c631eb7d32b61d70bfc615ae54e5552"></a><!-- doxytag: member="lightmediascanner.h::GNUC_NULL_TERMINATED" ref="3c631eb7d32b61d70bfc615ae54e5552" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_NULL_TERMINATED          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00146">146</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="7a9a21d60c8e567c8110c8e3069f8201"></a><!-- doxytag: member="lightmediascanner.h::GNUC_PURE" ref="7a9a21d60c8e567c8110c8e3069f8201" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_PURE          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00147">147</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="80a4050221a914ea58d5799f13109ebb"></a><!-- doxytag: member="lightmediascanner.h::GNUC_UNUSED" ref="80a4050221a914ea58d5799f13109ebb" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_UNUSED          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00150">150</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="34c563f40a0f86e597c51f1556669521"></a><!-- doxytag: member="lightmediascanner.h::GNUC_WARN_UNUSED_RESULT" ref="34c563f40a0f86e597c51f1556669521" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_WARN_UNUSED_RESULT          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00151">151</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+</div>
+</div><p>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="55ee3894f334dc5b30431bf94971f110"></a><!-- doxytag: member="lightmediascanner.h::lms_free_callback_t" ref="55ee3894f334dc5b30431bf94971f110" args=")(void *data)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef void(* <a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a>)(void *data)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00177">177</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="ccedd0cd6d535dcfee399957033074fd"></a><!-- doxytag: member="lightmediascanner.h::lms_plugin_t" ref="ccedd0cd6d535dcfee399957033074fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structlms__plugin.html">lms_plugin</a> <a class="el" href="structlms__plugin.html">lms_plugin_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00165">165</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="117b4bb24ec8fc48fc4e6f0d7fa9ea3a"></a><!-- doxytag: member="lightmediascanner.h::lms_progress_callback_t" ref="117b4bb24ec8fc48fc4e6f0d7fa9ea3a" args=")(lms_t *lms, const char *path, int path_len, lms_progress_status_t status, void *data)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef void(* <a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a>)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *path, int path_len, <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lms_progress_status_t</a> status, void *data)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00178">178</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="d118599605b4e66ca5f91376982b8a64"></a><!-- doxytag: member="lightmediascanner.h::lms_t" ref="d118599605b4e66ca5f91376982b8a64" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structlms.html">lms</a> <a class="el" href="structlms.html">lms_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00164">164</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+</div>
+</div><p>
+<hr><h2>Enumeration Type Documentation</h2>
+<a class="anchor" name="52b270a30c58810720ae0650f64d2370"></a><!-- doxytag: member="lightmediascanner.h::lms_progress_status_t" ref="52b270a30c58810720ae0650f64d2370" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lms_progress_status_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="52b270a30c58810720ae0650f64d2370204315e58ce4b7dfa6421b4d1556655d"></a><!-- doxytag: member="LMS_PROGRESS_STATUS_UP_TO_DATE" ref="52b270a30c58810720ae0650f64d2370204315e58ce4b7dfa6421b4d1556655d" args="" -->LMS_PROGRESS_STATUS_UP_TO_DATE</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70"></a><!-- doxytag: member="LMS_PROGRESS_STATUS_PROCESSED" ref="52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70" args="" -->LMS_PROGRESS_STATUS_PROCESSED</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11"></a><!-- doxytag: member="LMS_PROGRESS_STATUS_DELETED" ref="52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11" args="" -->LMS_PROGRESS_STATUS_DELETED</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152"></a><!-- doxytag: member="LMS_PROGRESS_STATUS_KILLED" ref="52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152" args="" -->LMS_PROGRESS_STATUS_KILLED</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82"></a><!-- doxytag: member="LMS_PROGRESS_STATUS_ERROR_PARSE" ref="52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82" args="" -->LMS_PROGRESS_STATUS_ERROR_PARSE</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082"></a><!-- doxytag: member="LMS_PROGRESS_STATUS_ERROR_COMM" ref="52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082" args="" -->LMS_PROGRESS_STATUS_ERROR_COMM</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="52b270a30c58810720ae0650f64d23704d4c093ecf32b2eba688a42908aa338c"></a><!-- doxytag: member="LMS_PROGRESS_STATUS_SKIPPED" ref="52b270a30c58810720ae0650f64d23704d4c093ecf32b2eba688a42908aa338c" args="" -->LMS_PROGRESS_STATUS_SKIPPED</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00167">167</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="03afcd1e04665bdaebe73d9f6cc20553"></a><!-- doxytag: member="lightmediascanner.h::lms_charset_add" ref="03afcd1e04665bdaebe73d9f6cc20553" args="(lms_t *lms, const char *charset) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* API int API int lms_charset_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>charset</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="35fc2de4828878b9dec07e8edda8a5e2"></a><!-- doxytag: member="lightmediascanner.h::lms_charset_del" ref="35fc2de4828878b9dec07e8edda8a5e2" args="(lms_t *lms, const char *charset) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* API int API int API int lms_charset_del           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>charset</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="5b70063cf19648de70bb145404aa3d0b"></a><!-- doxytag: member="lightmediascanner.h::lms_check" ref="5b70063cf19648de70bb145404aa3d0b" args="(lms_t *lms, const char *top_path) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int API int API int lms_check           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>top_path</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="bfd6888e606654c585e41aa946637432"></a><!-- doxytag: member="lightmediascanner.h::lms_check_single_process" ref="bfd6888e606654c585e41aa946637432" args="(lms_t *lms, const char *top_path) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int API int API int API int lms_check_single_process           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>top_path</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ce55a5c9cc767b96fa6f24b77bebc7c3"></a><!-- doxytag: member="lightmediascanner.h::lms_parser_add" ref="ce55a5c9cc767b96fa6f24b77bebc7c3" args="(lms_t *lms, const char *so_path) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* lms_parser_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>so_path</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="5ba173b12c355bbdf7913bfff0ff6415"></a><!-- doxytag: member="lightmediascanner.h::lms_parser_del" ref="5ba173b12c355bbdf7913bfff0ff6415" args="(lms_t *lms, lms_plugin_t *handle) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* API int lms_parser_del           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structlms__plugin.html">lms_plugin_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>handle</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e48d0483903bbb9604d14b44f7c569d9"></a><!-- doxytag: member="lightmediascanner.h::lms_parser_find_and_add" ref="e48d0483903bbb9604d14b44f7c569d9" args="(lms_t *lms, const char *name) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* lms_parser_find_and_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="bda4586257139ef13260e3fe3bfd1b77"></a><!-- doxytag: member="lightmediascanner.h::lms_parser_info" ref="bda4586257139ef13260e3fe3bfd1b77" args="(const char *so_path)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API struct <a class="el" href="structlms__parser__info.html">lms_parser_info</a>* <a class="el" href="structlms__parser__info.html">lms_parser_info</a>           </td>
+          <td>(</td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>so_path</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [read]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get <a class="el" href="structparser.html">parser</a> information.<p>
+Information can be used to let user choose parsers on Graphical User Interfaces.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>so_path</em>&nbsp;</td><td>full path to module. </td></tr>
+  </table>
+</dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="lightmediascanner_8c.html#66457cf4ec2ef4a50bd899f99e914650">lms_parser_info_find()</a> </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00699">699</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner_8h-source.html#l00204">lms_parser_info::authors</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00182">lms_plugin_info::authors</a>, <a class="el" href="lightmediascanner_8h-source.html#l00201">lms_parser_info::categories</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00179">lms_plugin_info::categories</a>, <a class="el" href="lightmediascanner_8h-source.html#l00202">lms_parser_info::description</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00180">lms_plugin_info::description</a>, <a class="el" href="lightmediascanner_8h-source.html#l00200">lms_parser_info::name</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00178">lms_plugin_info::name</a>, <a class="el" href="lightmediascanner_8h-source.html#l00199">lms_parser_info::path</a>, <a class="el" href="lightmediascanner_8h-source.html#l00205">lms_parser_info::uri</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00183">lms_plugin_info::uri</a>, <a class="el" href="lightmediascanner_8h-source.html#l00203">lms_parser_info::version</a>, and <a class="el" href="lightmediascanner__plugin_8h-source.html#l00181">lms_plugin_info::version</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00824">lms_parser_info_find()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="85b153a95dafb48c419dc1419e323567"></a><!-- doxytag: member="lightmediascanner.h::lms_parser_info_find" ref="85b153a95dafb48c419dc1419e323567" args="(const char *name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API struct <a class="el" href="structlms__parser__info.html">lms_parser_info</a>* lms_parser_info_find           </td>
+          <td>(</td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>name</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [read]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Find <a class="el" href="structparser.html">parser</a> by name and get its information.<p>
+Information can be used to let user choose parsers on Graphical User Interfaces.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>name of .so to find the whole so_path and retrieve information. </td></tr>
+  </table>
+</dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="lightmediascanner_8c.html#0b95c1ed1a71c241bb887ee672f740d8">lms_parser_info()</a> </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00824">824</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner_8c-source.html#l00699">lms_parser_info()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="f071ee2184c0d4d69c85cccd09e08b26"></a><!-- doxytag: member="lightmediascanner.h::lms_parser_info_free" ref="f071ee2184c0d4d69c85cccd09e08b26" args="(struct lms_parser_info *info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API void lms_parser_info_free           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structlms__parser__info.html">lms_parser_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free previously returned information.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>it is safe to call with NULL. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00843">843</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="ebe19263efa873f4629a18e77924bfaf"></a><!-- doxytag: member="lightmediascanner.h::lms_parsers_list" ref="ebe19263efa873f4629a18e77924bfaf" args="(int(*cb)(void *data, const char *path), const void *data)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API void lms_parsers_list           </td>
+          <td>(</td>
+          <td class="paramtype">int(*)(void *data, const char *path)&nbsp;</td>
+          <td class="paramname"> <em>cb</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&nbsp;</td>
+          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+List all known parsers on the system.<p>
+No information is retrieved, you might like to call <a class="el" href="lightmediascanner_8c.html#0b95c1ed1a71c241bb887ee672f740d8">lms_parser_info()</a> on the callback path.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>cb</em>&nbsp;</td><td>function to call for each path found. If it returns 0, it stops iteraction. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>extra data to pass to <em>cb</em> on every call. </td></tr>
+  </table>
+</dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00540">540</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00629">lms_parsers_list_by_category()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="f6dfb5e9ed76e132ee7f45e7fe26415e"></a><!-- doxytag: member="lightmediascanner.h::lms_parsers_list_by_category" ref="f6dfb5e9ed76e132ee7f45e7fe26415e" args="(const char *category, int(*cb)(void *data, const char *path, const struct lms_parser_info *info), const void *data)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API void lms_parsers_list_by_category           </td>
+          <td>(</td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>category</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int(*)(void *data, const char *path, const struct <a class="el" href="structlms__parser__info.html">lms_parser_info</a> *info)&nbsp;</td>
+          <td class="paramname"> <em>cb</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&nbsp;</td>
+          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+List all known parsers of a given category.<p>
+Since we need information to figure out <a class="el" href="structparser.html">parser</a> category, these are passed as argument to callback, but you should NOT modify or reference it after callback function returns since it will be released after that.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>category</em>&nbsp;</td><td>which category to match. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>cb</em>&nbsp;</td><td>function to call for each path found. If it returns 0, it stops iteraction. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>extra data to pass to <em>cb</em> on every call. </td></tr>
+  </table>
+</dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00629">629</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner_8c-source.html#l00540">lms_parsers_list()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="7d2b81cfe07a8cce4c2bef705e7529f4"></a><!-- doxytag: member="lightmediascanner.h::lms_process" ref="7d2b81cfe07a8cce4c2bef705e7529f4" args="(lms_t *lms, const char *top_path) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_process           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>top_path</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="c5eda23c23b2ea76f001ac994c2ba9e2"></a><!-- doxytag: member="lightmediascanner.h::lms_process_single_process" ref="c5eda23c23b2ea76f001ac994c2ba9e2" args="(lms_t *lms, const char *top_path) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int API int lms_process_single_process           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>top_path</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="d2da241599f7f576670d64184f972c43"></a><!-- doxytag: member="lightmediascanner.h::lms_set_progress_callback" ref="d2da241599f7f576670d64184f972c43" args="(lms_t *lms, lms_progress_callback_t cb, const void *data, lms_free_callback_t free_data) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API void lms_set_progress_callback           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a>&nbsp;</td>
+          <td class="paramname"> <em>cb</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&nbsp;</td>
+          <td class="paramname"> <em>data</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a>&nbsp;</td>
+          <td class="paramname"> <em>free_data</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set callback to be used to report progress (check and process).<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>cb</em>&nbsp;</td><td>function to call when files are processed or NULL to unset. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>data to give to cb when it's called, may be NULL. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>free_data</em>&nbsp;</td><td>function to call to free <em>data</em> when <a class="el" href="structlms.html">lms</a> is freed or new progress data is set. </td></tr>
+  </table>
+</dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00195">195</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00083">lms::cb</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00084">lms::data</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00085">lms::free_data</a>, and <a class="el" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">lms::progress</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="30aa1e83907fc1049d2adccb28eef489"></a><!-- doxytag: member="lightmediascanner.h::lms_stop_processing" ref="30aa1e83907fc1049d2adccb28eef489" args="(lms_t *lms) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int API int API int API int API void lms_stop_processing           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l01082">1082</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00088">lms::is_processing</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00089">lms::stop_processing</a>.</p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner_8h_85b153a95dafb48c419dc1419e323567_cgraph.dot b/www/api/lightmediascanner_8h_85b153a95dafb48c419dc1419e323567_cgraph.dot
new file mode 100644 (file)
index 0000000..e12d7a4
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_parser_info_find",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_parser_info",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8c.html#0b95c1ed1a71c241bb887ee672f740d8"];
+}
diff --git a/www/api/lightmediascanner_8h_85b153a95dafb48c419dc1419e323567_cgraph.md5 b/www/api/lightmediascanner_8h_85b153a95dafb48c419dc1419e323567_cgraph.md5
new file mode 100644 (file)
index 0000000..92e0681
--- /dev/null
@@ -0,0 +1 @@
+f04c80800232ad6da160032dcde58bae
\ No newline at end of file
diff --git a/www/api/lightmediascanner_8h__dep__incl.dot b/www/api/lightmediascanner_8h__dep__incl.dot
new file mode 100644 (file)
index 0000000..2029091
--- /dev/null
@@ -0,0 +1,42 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="src/lib/lightmediascanner.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8c.html"];
+  Node1 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="src/lib/lightmediascanner_private.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__private_8h.html"];
+  Node3 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="src/lib/lightmediascanner_check.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__check_8c.html"];
+  Node3 -> Node5 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="src/lib/lightmediascanner_process.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__process_8c.html"];
+  Node1 -> Node6 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="src/lib/lightmediascanner_plugin.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__plugin_8h.html"];
+  Node6 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 -> Node7 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="src/lib/lightmediascanner_db_private.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__private_8h.html"];
+  Node7 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 -> Node8 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="src/lib/lightmediascanner_db_audio.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__audio_8c.html"];
+  Node7 -> Node9 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="src/lib/lightmediascanner_db_common.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html"];
+  Node7 -> Node10 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="src/lib/lightmediascanner_db_image.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__image_8c.html"];
+  Node7 -> Node11 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="src/lib/lightmediascanner_db_playlist.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__playlist_8c.html"];
+  Node7 -> Node12 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="src/lib/lightmediascanner_db_video.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__video_8c.html"];
+  Node7 -> Node5 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 -> Node13 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="src/lib/lightmediascanner_db.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db_8h.html"];
+  Node13 -> Node8 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node10 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node11 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node12 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node5 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}
diff --git a/www/api/lightmediascanner_8h__dep__incl.md5 b/www/api/lightmediascanner_8h__dep__incl.md5
new file mode 100644 (file)
index 0000000..19880b7
--- /dev/null
@@ -0,0 +1 @@
+fb6bdf1e0ebe19d8d91542d2a63618f8
\ No newline at end of file
diff --git a/www/api/lightmediascanner_8h_f6dfb5e9ed76e132ee7f45e7fe26415e_cgraph.dot b/www/api/lightmediascanner_8h_f6dfb5e9ed76e132ee7f45e7fe26415e_cgraph.dot
new file mode 100644 (file)
index 0000000..90db537
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_parsers_list_by_category",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_parsers_list",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8c.html#7e27ccbd0abfd5d112586a00fd424db9"];
+}
diff --git a/www/api/lightmediascanner_8h_f6dfb5e9ed76e132ee7f45e7fe26415e_cgraph.md5 b/www/api/lightmediascanner_8h_f6dfb5e9ed76e132ee7f45e7fe26415e_cgraph.md5
new file mode 100644 (file)
index 0000000..8f2d976
--- /dev/null
@@ -0,0 +1 @@
+6cbda567f6329b3dbe1e0ab331e3af46
\ No newline at end of file
diff --git a/www/api/lightmediascanner__charset__conv_8c-source.html b/www/api/lightmediascanner__charset__conv_8c-source.html
new file mode 100644 (file)
index 0000000..4cbdd7a
--- /dev/null
@@ -0,0 +1,390 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_charset_conv.c Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>src/lib/lightmediascanner_charset_conv.c</h1><a href="lightmediascanner__charset__conv_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__charset__conv_8h.html">lightmediascanner_charset_conv.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;iconv.h&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;string.h&gt;</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;errno.h&gt;</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;ctype.h&gt;</span>
+<a name="l00028"></a>00028 
+<a name="l00029"></a>00029 <span class="keyword">struct </span><a class="code" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv</a> {
+<a name="l00030"></a>00030     iconv_t check;
+<a name="l00031"></a>00031     iconv_t fallback;
+<a name="l00032"></a>00032     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size;
+<a name="l00033"></a>00033     iconv_t *convs;
+<a name="l00034"></a>00034     <span class="keywordtype">char</span> **names;
+<a name="l00035"></a>00035 };
+<a name="l00036"></a>00036 
+<a name="l00046"></a>00046 <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *
+<a name="l00047"></a><a class="code" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">00047</a> <a class="code" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lms_charset_conv_new_full</a>(<span class="keywordtype">int</span> use_check, <span class="keywordtype">int</span> use_fallback)
+<a name="l00048"></a>00048 {
+<a name="l00049"></a>00049     <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc;
+<a name="l00050"></a>00050 
+<a name="l00051"></a>00051     lcc = malloc(<span class="keyword">sizeof</span>(*lcc));
+<a name="l00052"></a>00052     <span class="keywordflow">if</span> (!lcc) {
+<a name="l00053"></a>00053         perror(<span class="stringliteral">"malloc"</span>);
+<a name="l00054"></a>00054         <span class="keywordflow">return</span> NULL;
+<a name="l00055"></a>00055     }
+<a name="l00056"></a>00056 
+<a name="l00057"></a>00057     <span class="keywordflow">if</span> (!use_check)
+<a name="l00058"></a>00058         lcc-&gt;check = (iconv_t)-1;
+<a name="l00059"></a>00059     <span class="keywordflow">else</span> {
+<a name="l00060"></a>00060         lcc-&gt;check = iconv_open(<span class="stringliteral">"UTF-8"</span>, <span class="stringliteral">"UTF-8"</span>);
+<a name="l00061"></a>00061         <span class="keywordflow">if</span> (lcc-&gt;check == (iconv_t)-1) {
+<a name="l00062"></a>00062             perror(<span class="stringliteral">"ERROR: could not create conversion checker"</span>);
+<a name="l00063"></a>00063             <span class="keywordflow">goto</span> error_check;
+<a name="l00064"></a>00064         }
+<a name="l00065"></a>00065     }
+<a name="l00066"></a>00066 
+<a name="l00067"></a>00067     <span class="keywordflow">if</span> (!use_fallback)
+<a name="l00068"></a>00068         lcc-&gt;fallback = (iconv_t)-1;
+<a name="l00069"></a>00069     <span class="keywordflow">else</span> {
+<a name="l00070"></a>00070         lcc-&gt;fallback = iconv_open(<span class="stringliteral">"UTF-8//IGNORE"</span>, <span class="stringliteral">"UTF-8"</span>);
+<a name="l00071"></a>00071         <span class="keywordflow">if</span> (lcc-&gt;fallback == (iconv_t)-1) {
+<a name="l00072"></a>00072             perror(<span class="stringliteral">"ERROR: could not create conversion fallback"</span>);
+<a name="l00073"></a>00073             <span class="keywordflow">goto</span> error_fallback;
+<a name="l00074"></a>00074         }
+<a name="l00075"></a>00075     }
+<a name="l00076"></a>00076 
+<a name="l00077"></a>00077     lcc-&gt;size = 0;
+<a name="l00078"></a>00078     lcc-&gt;convs = NULL;
+<a name="l00079"></a>00079     lcc-&gt;names = NULL;
+<a name="l00080"></a>00080     <span class="keywordflow">return</span> lcc;
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082   error_fallback:
+<a name="l00083"></a>00083     <span class="keywordflow">if</span> (lcc-&gt;check != (iconv_t)-1)
+<a name="l00084"></a>00084         iconv_close(lcc-&gt;check);
+<a name="l00085"></a>00085   error_check:
+<a name="l00086"></a>00086     free(lcc);
+<a name="l00087"></a>00087 
+<a name="l00088"></a>00088     <span class="keywordflow">return</span> NULL;
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 
+<a name="l00100"></a>00100 <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *
+<a name="l00101"></a><a class="code" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">00101</a> <a class="code" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lms_charset_conv_new</a>(<span class="keywordtype">void</span>)
+<a name="l00102"></a>00102 {
+<a name="l00103"></a>00103     <span class="keywordflow">return</span> <a class="code" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lms_charset_conv_new_full</a>(1, 1);
+<a name="l00104"></a>00104 }
+<a name="l00105"></a>00105 
+<a name="l00111"></a>00111 <span class="keywordtype">void</span>
+<a name="l00112"></a><a class="code" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">00112</a> <a class="code" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lms_charset_conv_free</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc)
+<a name="l00113"></a>00113 {
+<a name="l00114"></a>00114     <span class="keywordtype">int</span> i;
+<a name="l00115"></a>00115 
+<a name="l00116"></a>00116     <span class="keywordflow">if</span> (!lcc)
+<a name="l00117"></a>00117         <span class="keywordflow">return</span>;
+<a name="l00118"></a>00118 
+<a name="l00119"></a>00119     <span class="keywordflow">if</span> (lcc-&gt;check != (iconv_t)-1)
+<a name="l00120"></a>00120         iconv_close(lcc-&gt;check);
+<a name="l00121"></a>00121     <span class="keywordflow">if</span> (lcc-&gt;fallback != (iconv_t)-1)
+<a name="l00122"></a>00122         iconv_close(lcc-&gt;fallback);
+<a name="l00123"></a>00123 
+<a name="l00124"></a>00124     <span class="keywordflow">for</span> (i = 0; i &lt; lcc-&gt;size; i++) {
+<a name="l00125"></a>00125         iconv_close(lcc-&gt;convs[i]);
+<a name="l00126"></a>00126         free(lcc-&gt;names[i]);
+<a name="l00127"></a>00127     }
+<a name="l00128"></a>00128 
+<a name="l00129"></a>00129     <span class="keywordflow">if</span> (lcc-&gt;convs)
+<a name="l00130"></a>00130         free(lcc-&gt;convs);
+<a name="l00131"></a>00131     <span class="keywordflow">if</span> (lcc-&gt;names)
+<a name="l00132"></a>00132         free(lcc-&gt;names);
+<a name="l00133"></a>00133     free(lcc);
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135 
+<a name="l00144"></a>00144 <span class="keywordtype">int</span>
+<a name="l00145"></a><a class="code" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">00145</a> <a class="code" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lms_charset_conv_add</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset)
+<a name="l00146"></a>00146 {
+<a name="l00147"></a>00147     iconv_t cd, *convs;
+<a name="l00148"></a>00148     <span class="keywordtype">char</span> **names;
+<a name="l00149"></a>00149     <span class="keywordtype">int</span> idx, ns;
+<a name="l00150"></a>00150 
+<a name="l00151"></a>00151     <span class="keywordflow">if</span> (!lcc)
+<a name="l00152"></a>00152         <span class="keywordflow">return</span> -1;
+<a name="l00153"></a>00153 
+<a name="l00154"></a>00154     <span class="keywordflow">if</span> (!charset)
+<a name="l00155"></a>00155         <span class="keywordflow">return</span> -2;
+<a name="l00156"></a>00156 
+<a name="l00157"></a>00157     cd = iconv_open(<span class="stringliteral">"UTF-8"</span>, charset);
+<a name="l00158"></a>00158     <span class="keywordflow">if</span> (cd == (iconv_t)-1) {
+<a name="l00159"></a>00159         fprintf(stderr, <span class="stringliteral">"ERROR: could not add conversion charset '%s': %s\n"</span>,
+<a name="l00160"></a>00160                 charset, strerror(errno));
+<a name="l00161"></a>00161         <span class="keywordflow">return</span> -3;
+<a name="l00162"></a>00162     }
+<a name="l00163"></a>00163 
+<a name="l00164"></a>00164     idx = lcc-&gt;size;
+<a name="l00165"></a>00165     ns = lcc-&gt;size + 1;
+<a name="l00166"></a>00166 
+<a name="l00167"></a>00167     convs = realloc(lcc-&gt;convs, ns * <span class="keyword">sizeof</span>(*convs));
+<a name="l00168"></a>00168     <span class="keywordflow">if</span> (!convs)
+<a name="l00169"></a>00169         <span class="keywordflow">goto</span> realloc_error;
+<a name="l00170"></a>00170     lcc-&gt;convs = convs;
+<a name="l00171"></a>00171     lcc-&gt;convs[idx] = cd;
+<a name="l00172"></a>00172 
+<a name="l00173"></a>00173     names = realloc(lcc-&gt;names, ns * <span class="keyword">sizeof</span>(*names));
+<a name="l00174"></a>00174     <span class="keywordflow">if</span> (!names)
+<a name="l00175"></a>00175         <span class="keywordflow">goto</span> realloc_error;
+<a name="l00176"></a>00176     lcc-&gt;names = names;
+<a name="l00177"></a>00177     lcc-&gt;names[idx] = strdup(charset);
+<a name="l00178"></a>00178     <span class="keywordflow">if</span> (!lcc-&gt;names[idx])
+<a name="l00179"></a>00179         <span class="keywordflow">goto</span> realloc_error;
+<a name="l00180"></a>00180 
+<a name="l00181"></a>00181     lcc-&gt;size = ns;
+<a name="l00182"></a>00182     <span class="keywordflow">return</span> 0;
+<a name="l00183"></a>00183 
+<a name="l00184"></a>00184   realloc_error:
+<a name="l00185"></a>00185     perror(<span class="stringliteral">"realloc"</span>);
+<a name="l00186"></a>00186     iconv_close(cd);
+<a name="l00187"></a>00187     <span class="keywordflow">return</span> -4;
+<a name="l00188"></a>00188 }
+<a name="l00189"></a>00189 
+<a name="l00190"></a>00190 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00191"></a>00191 _find(<span class="keyword">const</span> <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset)
+<a name="l00192"></a>00192 {
+<a name="l00193"></a>00193     <span class="keywordtype">int</span> i;
+<a name="l00194"></a>00194 
+<a name="l00195"></a>00195     <span class="keywordflow">for</span> (i = 0; i &lt; lcc-&gt;size; i++)
+<a name="l00196"></a>00196         <span class="keywordflow">if</span> (strcmp(lcc-&gt;names[i], charset) == 0)
+<a name="l00197"></a>00197             <span class="keywordflow">return</span> i;
+<a name="l00198"></a>00198 
+<a name="l00199"></a>00199     <span class="keywordflow">return</span> -1;
+<a name="l00200"></a>00200 }
+<a name="l00201"></a>00201 
+<a name="l00210"></a>00210 <span class="keywordtype">int</span>
+<a name="l00211"></a><a class="code" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">00211</a> <a class="code" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">lms_charset_conv_del</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset)
+<a name="l00212"></a>00212 {
+<a name="l00213"></a>00213     iconv_t *convs;
+<a name="l00214"></a>00214     <span class="keywordtype">char</span> **names;
+<a name="l00215"></a>00215     <span class="keywordtype">int</span> idx;
+<a name="l00216"></a>00216 
+<a name="l00217"></a>00217     <span class="keywordflow">if</span> (!lcc)
+<a name="l00218"></a>00218         <span class="keywordflow">return</span> -1;
+<a name="l00219"></a>00219 
+<a name="l00220"></a>00220     <span class="keywordflow">if</span> (!charset)
+<a name="l00221"></a>00221         <span class="keywordflow">return</span> -2;
+<a name="l00222"></a>00222 
+<a name="l00223"></a>00223     idx = _find(lcc, charset);
+<a name="l00224"></a>00224     <span class="keywordflow">if</span> (idx &lt; 0) {
+<a name="l00225"></a>00225         fprintf(stderr, <span class="stringliteral">"ERROR: could not find charset '%s'\n"</span>, charset);
+<a name="l00226"></a>00226         <span class="keywordflow">return</span> -3;
+<a name="l00227"></a>00227     }
+<a name="l00228"></a>00228 
+<a name="l00229"></a>00229     iconv_close(lcc-&gt;convs[idx]);
+<a name="l00230"></a>00230     free(lcc-&gt;names[idx]);
+<a name="l00231"></a>00231 
+<a name="l00232"></a>00232     lcc-&gt;size--;
+<a name="l00233"></a>00233     <span class="keywordflow">for</span> (; idx &lt; lcc-&gt;size; idx++) {
+<a name="l00234"></a>00234         lcc-&gt;convs[idx] = lcc-&gt;convs[idx + 1];
+<a name="l00235"></a>00235         lcc-&gt;names[idx] = lcc-&gt;names[idx + 1];
+<a name="l00236"></a>00236     }
+<a name="l00237"></a>00237 
+<a name="l00238"></a>00238     convs = realloc(lcc-&gt;convs, lcc-&gt;size * <span class="keyword">sizeof</span>(*convs));
+<a name="l00239"></a>00239     <span class="keywordflow">if</span> (convs)
+<a name="l00240"></a>00240         lcc-&gt;convs = convs;
+<a name="l00241"></a>00241     <span class="keywordflow">else</span>
+<a name="l00242"></a>00242         perror(<span class="stringliteral">"could not realloc 'convs'"</span>);
+<a name="l00243"></a>00243 
+<a name="l00244"></a>00244     names = realloc(lcc-&gt;names, lcc-&gt;size * <span class="keyword">sizeof</span>(*names));
+<a name="l00245"></a>00245     <span class="keywordflow">if</span> (names)
+<a name="l00246"></a>00246         lcc-&gt;names = names;
+<a name="l00247"></a>00247     <span class="keywordflow">else</span>
+<a name="l00248"></a>00248         perror(<span class="stringliteral">"could not realloc 'names'"</span>);
+<a name="l00249"></a>00249 
+<a name="l00250"></a>00250     <span class="keywordflow">return</span> 0;
+<a name="l00251"></a>00251 }
+<a name="l00252"></a>00252 
+<a name="l00253"></a>00253 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00254"></a>00254 _check(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keyword">const</span> <span class="keywordtype">char</span> *istr, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ilen, <span class="keywordtype">char</span> *ostr, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> olen)
+<a name="l00255"></a>00255 {
+<a name="l00256"></a>00256     <span class="keywordtype">char</span> *inbuf, *outbuf;
+<a name="l00257"></a>00257     <span class="keywordtype">size_t</span> r, inlen, outlen;
+<a name="l00258"></a>00258 
+<a name="l00259"></a>00259     <span class="keywordflow">if</span> (lcc-&gt;check == (iconv_t)-1)
+<a name="l00260"></a>00260         <span class="keywordflow">return</span> -1;
+<a name="l00261"></a>00261 
+<a name="l00262"></a>00262     inbuf = (<span class="keywordtype">char</span> *)istr;
+<a name="l00263"></a>00263     inlen = ilen;
+<a name="l00264"></a>00264     outbuf = ostr;
+<a name="l00265"></a>00265     outlen = olen;
+<a name="l00266"></a>00266 
+<a name="l00267"></a>00267     iconv(lcc-&gt;check, NULL, NULL, NULL, NULL);
+<a name="l00268"></a>00268     r = iconv(lcc-&gt;check, &amp;inbuf, &amp;inlen, &amp;outbuf, &amp;outlen);
+<a name="l00269"></a>00269     <span class="keywordflow">if</span> (r == (<span class="keywordtype">size_t</span>)-1)
+<a name="l00270"></a>00270         <span class="keywordflow">return</span> -1;
+<a name="l00271"></a>00271     <span class="keywordflow">else</span>
+<a name="l00272"></a>00272         <span class="keywordflow">return</span> 0;
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274 
+<a name="l00275"></a>00275 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00276"></a>00276 _conv(iconv_t cd, <span class="keywordtype">char</span> **p_str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len, <span class="keywordtype">char</span> *ostr, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> olen)
+<a name="l00277"></a>00277 {
+<a name="l00278"></a>00278     <span class="keywordtype">char</span> *inbuf, *outbuf;
+<a name="l00279"></a>00279     <span class="keywordtype">size_t</span> r, inlen, outlen;
+<a name="l00280"></a>00280 
+<a name="l00281"></a>00281     inbuf = *p_str;
+<a name="l00282"></a>00282     inlen = *p_len;
+<a name="l00283"></a>00283     outbuf = ostr;
+<a name="l00284"></a>00284     outlen = olen;
+<a name="l00285"></a>00285 
+<a name="l00286"></a>00286     iconv(cd, NULL, NULL, NULL, NULL);
+<a name="l00287"></a>00287     r = iconv(cd, &amp;inbuf, &amp;inlen, &amp;outbuf, &amp;outlen);
+<a name="l00288"></a>00288     <span class="keywordflow">if</span> (r == (<span class="keywordtype">size_t</span>)-1)
+<a name="l00289"></a>00289         <span class="keywordflow">return</span> -1;
+<a name="l00290"></a>00290 
+<a name="l00291"></a>00291     *p_len = olen - outlen;
+<a name="l00292"></a>00292     free(*p_str);
+<a name="l00293"></a>00293     *p_str = ostr;
+<a name="l00294"></a>00294 
+<a name="l00295"></a>00295     outbuf = realloc(*p_str, *p_len + 1);
+<a name="l00296"></a>00296     <span class="keywordflow">if</span> (!outbuf)
+<a name="l00297"></a>00297         perror(<span class="stringliteral">"realloc"</span>);
+<a name="l00298"></a>00298     <span class="keywordflow">else</span>
+<a name="l00299"></a>00299         *p_str = outbuf;
+<a name="l00300"></a>00300 
+<a name="l00301"></a>00301     (*p_str)[*p_len] = <span class="charliteral">'\0'</span>;
+<a name="l00302"></a>00302 
+<a name="l00303"></a>00303     <span class="keywordflow">return</span> 0;
+<a name="l00304"></a>00304 }
+<a name="l00305"></a>00305 
+<a name="l00306"></a>00306 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00307"></a>00307 _fix_non_ascii(<span class="keywordtype">char</span> *s, <span class="keywordtype">int</span> len)
+<a name="l00308"></a>00308 {
+<a name="l00309"></a>00309     <span class="keywordflow">for</span> (; len &gt; 0; len--, s++)
+<a name="l00310"></a>00310         <span class="keywordflow">if</span> (!isprint(*s))
+<a name="l00311"></a>00311             *s = <span class="charliteral">'?'</span>;
+<a name="l00312"></a>00312 }
+<a name="l00313"></a>00313 
+<a name="l00327"></a>00327 <span class="keywordtype">int</span>
+<a name="l00328"></a><a class="code" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">00328</a> <a class="code" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keywordtype">char</span> **p_str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len)
+<a name="l00329"></a>00329 {
+<a name="l00330"></a>00330     <span class="keywordtype">char</span> *outstr;
+<a name="l00331"></a>00331     <span class="keywordtype">int</span> i, outlen;
+<a name="l00332"></a>00332 
+<a name="l00333"></a>00333     <span class="keywordflow">if</span> (!lcc)
+<a name="l00334"></a>00334         <span class="keywordflow">return</span> -1;
+<a name="l00335"></a>00335     <span class="keywordflow">if</span> (!p_str)
+<a name="l00336"></a>00336         <span class="keywordflow">return</span> -2;
+<a name="l00337"></a>00337     <span class="keywordflow">if</span> (!p_len)
+<a name="l00338"></a>00338         <span class="keywordflow">return</span> -3;
+<a name="l00339"></a>00339     <span class="keywordflow">if</span> (!*p_str || !*p_len)
+<a name="l00340"></a>00340         <span class="keywordflow">return</span> 0;
+<a name="l00341"></a>00341 
+<a name="l00342"></a>00342     outlen = 2 * *p_len;
+<a name="l00343"></a>00343     outstr = malloc(outlen + 1);
+<a name="l00344"></a>00344     <span class="keywordflow">if</span> (!outstr) {
+<a name="l00345"></a>00345         perror(<span class="stringliteral">"malloc"</span>);
+<a name="l00346"></a>00346         <span class="keywordflow">return</span> -4;
+<a name="l00347"></a>00347     }
+<a name="l00348"></a>00348 
+<a name="l00349"></a>00349     <span class="keywordflow">if</span> (_check(lcc, *p_str, *p_len, outstr, outlen) == 0) {
+<a name="l00350"></a>00350         free(outstr);
+<a name="l00351"></a>00351         <span class="keywordflow">return</span> 0;
+<a name="l00352"></a>00352     }
+<a name="l00353"></a>00353 
+<a name="l00354"></a>00354     <span class="keywordflow">for</span> (i = 0; i &lt; lcc-&gt;size; i++)
+<a name="l00355"></a>00355         <span class="keywordflow">if</span> (_conv(lcc-&gt;convs[i], p_str, p_len, outstr, outlen) == 0)
+<a name="l00356"></a>00356             <span class="keywordflow">return</span> 0;
+<a name="l00357"></a>00357 
+<a name="l00358"></a>00358     <span class="keywordflow">if</span> (lcc-&gt;fallback == (iconv_t)-1)
+<a name="l00359"></a>00359         <span class="keywordflow">return</span> -5;
+<a name="l00360"></a>00360 
+<a name="l00361"></a>00361     fprintf(stderr,
+<a name="l00362"></a>00362             <span class="stringliteral">"WARNING: could not convert '%*s' to any charset, use fallback\n"</span>,
+<a name="l00363"></a>00363             *p_len, *p_str);
+<a name="l00364"></a>00364     i = _conv(lcc-&gt;fallback, p_str, p_len, outstr, outlen);
+<a name="l00365"></a>00365     <span class="keywordflow">if</span> (i &lt; 0) {
+<a name="l00366"></a>00366         _fix_non_ascii(*p_str, *p_len);
+<a name="l00367"></a>00367         free(outstr);
+<a name="l00368"></a>00368     }
+<a name="l00369"></a>00369     <span class="keywordflow">return</span> i;
+<a name="l00370"></a>00370 }
+<a name="l00371"></a>00371 
+<a name="l00385"></a>00385 <span class="keywordtype">int</span>
+<a name="l00386"></a><a class="code" href="lightmediascanner__charset__conv_8c.html#8ea844f16120ba4000b7b142192e91e4">00386</a> <a class="code" href="lightmediascanner__charset__conv_8c.html#8ea844f16120ba4000b7b142192e91e4">lms_charset_conv_force</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keywordtype">char</span> **p_str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len)
+<a name="l00387"></a>00387 {
+<a name="l00388"></a>00388     <span class="keywordtype">char</span> *outstr;
+<a name="l00389"></a>00389     <span class="keywordtype">int</span> i, outlen;
+<a name="l00390"></a>00390 
+<a name="l00391"></a>00391     <span class="keywordflow">if</span> (!lcc)
+<a name="l00392"></a>00392         <span class="keywordflow">return</span> -1;
+<a name="l00393"></a>00393     <span class="keywordflow">if</span> (!p_str)
+<a name="l00394"></a>00394         <span class="keywordflow">return</span> -2;
+<a name="l00395"></a>00395     <span class="keywordflow">if</span> (!p_len)
+<a name="l00396"></a>00396         <span class="keywordflow">return</span> -3;
+<a name="l00397"></a>00397     <span class="keywordflow">if</span> (!*p_str || !*p_len)
+<a name="l00398"></a>00398         <span class="keywordflow">return</span> 0;
+<a name="l00399"></a>00399 
+<a name="l00400"></a>00400     outlen = 2 * *p_len;
+<a name="l00401"></a>00401     outstr = malloc(outlen + 1);
+<a name="l00402"></a>00402     <span class="keywordflow">if</span> (!outstr) {
+<a name="l00403"></a>00403         perror(<span class="stringliteral">"malloc"</span>);
+<a name="l00404"></a>00404         <span class="keywordflow">return</span> -4;
+<a name="l00405"></a>00405     }
+<a name="l00406"></a>00406 
+<a name="l00407"></a>00407     <span class="keywordflow">for</span> (i = 0; i &lt; lcc-&gt;size; i++)
+<a name="l00408"></a>00408         <span class="keywordflow">if</span> (_conv(lcc-&gt;convs[i], p_str, p_len, outstr, outlen) == 0)
+<a name="l00409"></a>00409             <span class="keywordflow">return</span> 0;
+<a name="l00410"></a>00410 
+<a name="l00411"></a>00411     <span class="keywordflow">if</span> (lcc-&gt;fallback == (iconv_t)-1)
+<a name="l00412"></a>00412         <span class="keywordflow">return</span> -5;
+<a name="l00413"></a>00413 
+<a name="l00414"></a>00414     fprintf(stderr,
+<a name="l00415"></a>00415             <span class="stringliteral">"WARNING: could not convert '%*s' to any charset, use fallback\n"</span>,
+<a name="l00416"></a>00416             *p_len, *p_str);
+<a name="l00417"></a>00417     i = _conv(lcc-&gt;fallback, p_str, p_len, outstr, outlen);
+<a name="l00418"></a>00418     <span class="keywordflow">if</span> (i &lt; 0) {
+<a name="l00419"></a>00419         _fix_non_ascii(*p_str, *p_len);
+<a name="l00420"></a>00420         free(outstr);
+<a name="l00421"></a>00421     }
+<a name="l00422"></a>00422     <span class="keywordflow">return</span> i;
+<a name="l00423"></a>00423 }
+<a name="l00424"></a>00424 
+<a name="l00439"></a>00439 <span class="keywordtype">int</span>
+<a name="l00440"></a><a class="code" href="lightmediascanner__charset__conv_8c.html#f069b89e828896690fdd919e5b042c7d">00440</a> <a class="code" href="lightmediascanner__charset__conv_8c.html#f069b89e828896690fdd919e5b042c7d">lms_charset_conv_check</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len)
+<a name="l00441"></a>00441 {
+<a name="l00442"></a>00442     <span class="keywordtype">char</span> *outstr;
+<a name="l00443"></a>00443     <span class="keywordtype">int</span> r, outlen;
+<a name="l00444"></a>00444 
+<a name="l00445"></a>00445     <span class="keywordflow">if</span> (!lcc)
+<a name="l00446"></a>00446         <span class="keywordflow">return</span> -1;
+<a name="l00447"></a>00447     <span class="keywordflow">if</span> (!str || !len)
+<a name="l00448"></a>00448         <span class="keywordflow">return</span> 0;
+<a name="l00449"></a>00449 
+<a name="l00450"></a>00450     outlen = 2 * len;
+<a name="l00451"></a>00451     outstr = malloc(outlen);
+<a name="l00452"></a>00452     <span class="keywordflow">if</span> (!outstr) {
+<a name="l00453"></a>00453         perror(<span class="stringliteral">"malloc"</span>);
+<a name="l00454"></a>00454         <span class="keywordflow">return</span> -2;
+<a name="l00455"></a>00455     }
+<a name="l00456"></a>00456 
+<a name="l00457"></a>00457     r = _check(lcc, str, len, outstr, outlen);
+<a name="l00458"></a>00458     free(outstr);
+<a name="l00459"></a>00459     <span class="keywordflow">return</span> r;
+<a name="l00460"></a>00460 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__charset__conv_8c.html b/www/api/lightmediascanner__charset__conv_8c.html
new file mode 100644 (file)
index 0000000..1ae29c5
--- /dev/null
@@ -0,0 +1,290 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_charset_conv.c File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>src/lib/lightmediascanner_charset_conv.c File Reference</h1><code>#include &quot;<a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>&quot;</code><br>
+<code>#include &lt;iconv.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;string.h&gt;</code><br>
+<code>#include &lt;errno.h&gt;</code><br>
+<code>#include &lt;ctype.h&gt;</code><br>
+
+<p>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_charset_conv.c:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<a href="lightmediascanner__charset__conv_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lms_charset_conv_new_full</a> (int use_check, int use_fallback)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lms_charset_conv_new</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lms_charset_conv_free</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lms_charset_conv_add</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *charset)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">lms_charset_conv_del</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *charset)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, char **p_str, unsigned int *p_len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8c.html#8ea844f16120ba4000b7b142192e91e4">lms_charset_conv_force</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, char **p_str, unsigned int *p_len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8c.html#f069b89e828896690fdd919e5b042c7d">lms_charset_conv_check</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *str, unsigned int len)</td></tr>
+
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="35b728d3c5cb940027ebc47589971b25"></a><!-- doxytag: member="lightmediascanner_charset_conv.c::lms_charset_conv" ref="35b728d3c5cb940027ebc47589971b25" args="(lms_charset_conv_t *lcc, char **p_str, unsigned int *p_len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_charset_conv           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char **&nbsp;</td>
+          <td class="paramname"> <em>p_str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int *&nbsp;</td>
+          <td class="paramname"> <em>p_len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+If required, do charset conversion to UTF-8.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>lcc</em>&nbsp;</td><td>existing Light Media Scanner charset conversion. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>p_str</em>&nbsp;</td><td>string to be converted. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>p_len</em>&nbsp;</td><td>string size.</td></tr>
+  </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>the check for string being already UTF-8 is not reliable, some cases might show false positives (UTF-16 is considered UTF-8). </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="lightmediascanner__charset__conv_8c.html#f069b89e828896690fdd919e5b042c7d">lms_charset_conv_check()</a></dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00328">328</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="0a3006beae6fc8c59eca75468c1bc000"></a><!-- doxytag: member="lightmediascanner_charset_conv.c::lms_charset_conv_add" ref="0a3006beae6fc8c59eca75468c1bc000" args="(lms_charset_conv_t *lcc, const char *charset)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_charset_conv_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>charset</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Register new charset to conversion tool.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>lcc</em>&nbsp;</td><td>existing Light Media Scanner charset conversion. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>charset</em>&nbsp;</td><td>charset name as understood by iconv_open(3).</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00145">145</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00496">lms_charset_add()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="f069b89e828896690fdd919e5b042c7d"></a><!-- doxytag: member="lightmediascanner_charset_conv.c::lms_charset_conv_check" ref="f069b89e828896690fdd919e5b042c7d" args="(lms_charset_conv_t *lcc, const char *str, unsigned int len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_charset_conv_check           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Check if strings is not UTF-8 and conversion is required.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>lcc</em>&nbsp;</td><td>existing Light Media Scanner charset conversion. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>string to be analysed. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>string size.</td></tr>
+  </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>current implementation is not reliable, it tries to convert from UTF-8 to UTF-8. Some cases, like ISO-8859-1 will work, but some like UTF-16 to UTF-8 will say it's already in the correct charset, even if it's not.</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if string is already UTF-8. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00440">440</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="ad60dd3a2c2ebcf9ee1100986fc572e4"></a><!-- doxytag: member="lightmediascanner_charset_conv.c::lms_charset_conv_del" ref="ad60dd3a2c2ebcf9ee1100986fc572e4" args="(lms_charset_conv_t *lcc, const char *charset)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_charset_conv_del           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>charset</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Forget about previously registered charset in conversion tool.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>lcc</em>&nbsp;</td><td>existing Light Media Scanner charset conversion. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>charset</em>&nbsp;</td><td>charset name.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00211">211</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00519">lms_charset_del()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="8ea844f16120ba4000b7b142192e91e4"></a><!-- doxytag: member="lightmediascanner_charset_conv.c::lms_charset_conv_force" ref="8ea844f16120ba4000b7b142192e91e4" args="(lms_charset_conv_t *lcc, char **p_str, unsigned int *p_len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_charset_conv_force           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char **&nbsp;</td>
+          <td class="paramname"> <em>p_str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int *&nbsp;</td>
+          <td class="paramname"> <em>p_len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Forcefully do charset conversion to UTF-8.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>lcc</em>&nbsp;</td><td>existing Light Media Scanner charset conversion. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>p_str</em>&nbsp;</td><td>string to be converted. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>p_len</em>&nbsp;</td><td>string size.</td></tr>
+  </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>This function does not check for the string being in UTF-8 before doing the conversion, use it if you are sure about the charset. In this case you'll usually have just one charset added.</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00386">386</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.</p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__charset__conv_8c__incl.dot b/www/api/lightmediascanner__charset__conv_8c__incl.dot
new file mode 100644 (file)
index 0000000..5141c3b
--- /dev/null
@@ -0,0 +1,21 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_charset_conv.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lightmediascanner_charset_conv.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__charset__conv_8h.html"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="iconv.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="stdio.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="stdlib.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="string.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="errno.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="ctype.h",height=0.2,width=0.4,color="grey75"];
+}
diff --git a/www/api/lightmediascanner__charset__conv_8c__incl.md5 b/www/api/lightmediascanner__charset__conv_8c__incl.md5
new file mode 100644 (file)
index 0000000..1f710f1
--- /dev/null
@@ -0,0 +1 @@
+42e4a30fd4890b6609d2b4c1f4c3171a
\ No newline at end of file
diff --git a/www/api/lightmediascanner__charset__conv_8h-source.html b/www/api/lightmediascanner__charset__conv_8h-source.html
new file mode 100644 (file)
index 0000000..7290d60
--- /dev/null
@@ -0,0 +1,90 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_charset_conv.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>src/lib/lightmediascanner_charset_conv.h</h1><a href="lightmediascanner__charset__conv_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef _LIGHTMEDIASCANNER_CHARSET_CONV_H_</span>
+<a name="l00022"></a><a class="code" href="lightmediascanner__charset__conv_8h.html#79f872f99949ecde4c1661e4b78b4c2b">00022</a> <span class="preprocessor"></span><span class="preprocessor">#define _LIGHTMEDIASCANNER_CHARSET_CONV_H_ 1</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#ifdef GNUC_MALLOC</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#undef GNUC_MALLOC</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#ifdef GNUC_WARN_UNUSED_RESULT</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#undef GNUC_WARN_UNUSED_RESULT</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#ifdef GNUC_NON_NULL</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#undef GNUC_NON_NULL</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#ifdef API</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#undef API</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00036"></a>00036 <span class="preprocessor"></span>
+<a name="l00037"></a>00037 <span class="preprocessor">#ifdef __GNUC__</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt; 2 || (__GNUC__ == 2 &amp;&amp; __GNUC_MINOR__ &gt;= 96)</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_MALLOC __attribute__((__malloc__))</span>
+<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_MALLOC</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt; 3 || (__GNUC__ == 3 &amp;&amp; __GNUC_MINOR__ &gt;= 4)</span>
+<a name="l00044"></a>00044 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_WARN_UNUSED_RESULT __attribute__((warn_unused_result))</span>
+<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))</span>
+<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_WARN_UNUSED_RESULT</span>
+<a name="l00048"></a>00048 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00049"></a>00049 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00050"></a>00050 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt;= 4</span>
+<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="preprocessor">#  define API __attribute__ ((visibility("default")))</span>
+<a name="l00052"></a>00052 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00053"></a>00053 <span class="preprocessor"></span><span class="preprocessor">#  define API</span>
+<a name="l00054"></a>00054 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00056"></a><a class="code" href="lightmediascanner__charset__conv_8h.html#2213ea4dca0e242f957f63988caab768">00056</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_MALLOC</span>
+<a name="l00057"></a><a class="code" href="lightmediascanner__charset__conv_8h.html#34c563f40a0f86e597c51f1556669521">00057</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_WARN_UNUSED_RESULT</span>
+<a name="l00058"></a><a class="code" href="lightmediascanner__charset__conv_8h.html#6fe68cac0abf3e2ca61141920414e93a">00058</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00059"></a><a class="code" href="lightmediascanner__charset__conv_8h.html#d8ce4efaa307683d3d763b37b4711c53">00059</a> <span class="preprocessor"></span><span class="preprocessor">#  define API</span>
+<a name="l00060"></a>00060 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00061"></a>00061 <span class="preprocessor"></span>
+<a name="l00062"></a>00062 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00063"></a>00063 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+<a name="l00064"></a>00064 <span class="preprocessor">#endif</span>
+<a name="l00065"></a>00065 <span class="preprocessor"></span>
+<a name="l00072"></a><a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">00072</a>     <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv</a> <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a>;
+<a name="l00073"></a>00073 
+<a name="l00074"></a>00074     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *<a class="code" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lms_charset_conv_new_full</a>(<span class="keywordtype">int</span> use_check, <span class="keywordtype">int</span> use_fallback) <a class="code" href="lightmediascanner_8h.html#2213ea4dca0e242f957f63988caab768">GNUC_MALLOC</a> <a class="code" href="lightmediascanner_8h.html#34c563f40a0f86e597c51f1556669521">GNUC_WARN_UNUSED_RESULT</a>;
+<a name="l00075"></a>00075     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *<a class="code" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lms_charset_conv_new</a>(<span class="keywordtype">void</span>) <a class="code" href="lightmediascanner_8h.html#2213ea4dca0e242f957f63988caab768">GNUC_MALLOC</a> GNUC_WARN_UNUSED_RESULT;
+<a name="l00076"></a>00076     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lms_charset_conv_free</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00077"></a>00077     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lms_charset_conv_add</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const <span class="keywordtype">char</span> *charset) GNUC_NON_NULL(1, 2);
+<a name="l00078"></a>00078     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">lms_charset_conv_del</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const <span class="keywordtype">char</span> *charset) GNUC_NON_NULL(1, 2);
+<a name="l00079"></a>00079 
+<a name="l00080"></a>00080     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keywordtype">char</span> **p_str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len) GNUC_NON_NULL(1, 2, 3);
+<a name="l00081"></a>00081     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#8ea844f16120ba4000b7b142192e91e4">lms_charset_conv_force</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keywordtype">char</span> **p_str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len) GNUC_NON_NULL(1, 2, 3);
+<a name="l00082"></a>00082     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#f069b89e828896690fdd919e5b042c7d">lms_charset_conv_check</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const <span class="keywordtype">char</span> *str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len) GNUC_NON_NULL(1, 2);
+<a name="l00083"></a>00083 
+<a name="l00087"></a>00087 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00088"></a>00088 <span class="preprocessor"></span>}
+<a name="l00089"></a>00089 <span class="preprocessor">#endif</span>
+<a name="l00090"></a>00090 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_CHARSET_CONV_H_ */</span>
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__charset__conv_8h.html b/www/api/lightmediascanner__charset__conv_8h.html
new file mode 100644 (file)
index 0000000..222c33c
--- /dev/null
@@ -0,0 +1,169 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_charset_conv.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>src/lib/lightmediascanner_charset_conv.h File Reference</h1>
+<p>
+<div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<a href="lightmediascanner__charset__conv_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8h.html#79f872f99949ecde4c1661e4b78b4c2b">_LIGHTMEDIASCANNER_CHARSET_CONV_H_</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8h.html#2213ea4dca0e242f957f63988caab768">GNUC_MALLOC</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8h.html#34c563f40a0f86e597c51f1556669521">GNUC_WARN_UNUSED_RESULT</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_charset_conv&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lms_charset_conv_new_full</a> (int use_check, int use_fallback) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lms_charset_conv_new</a> (void) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lms_charset_conv_free</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#gfc1aad4c212b5fa1ce7280d2b7df3ef7">lms_charset_conv_add</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *charset) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#gc364c502a4a4a64ea9f092a61074a90a">lms_charset_conv_del</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *charset) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#gd843f59abac208048f13437534d589fc">lms_charset_conv</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, char **p_str, unsigned int *p_len) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g9a610040a6380c745277effc5c4c9112">lms_charset_conv_force</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, char **p_str, unsigned int *p_len) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int API <br class="typebreak">
+int API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#gbc8903e67c3c7eefa902cbb2bd5e3338">lms_charset_conv_check</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *str, unsigned int len) GNUC_NON_NULL(1</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="79f872f99949ecde4c1661e4b78b4c2b"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::_LIGHTMEDIASCANNER_CHARSET_CONV_H_" ref="79f872f99949ecde4c1661e4b78b4c2b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _LIGHTMEDIASCANNER_CHARSET_CONV_H_&nbsp;&nbsp;&nbsp;1          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copyright (C) 2007 by INdT<p>
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00022">22</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="d8ce4efaa307683d3d763b37b4711c53"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::API" ref="d8ce4efaa307683d3d763b37b4711c53" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define API          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00059">59</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="2213ea4dca0e242f957f63988caab768"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::GNUC_MALLOC" ref="2213ea4dca0e242f957f63988caab768" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_MALLOC          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00056">56</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_NON_NULL          </td>
+          <td>(</td>
+          <td class="paramtype"> <em>...</em>&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00058">58</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="34c563f40a0f86e597c51f1556669521"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::GNUC_WARN_UNUSED_RESULT" ref="34c563f40a0f86e597c51f1556669521" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_WARN_UNUSED_RESULT          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00057">57</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.</p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__charset__conv_8h__dep__incl.dot b/www/api/lightmediascanner__charset__conv_8h__dep__incl.dot
new file mode 100644 (file)
index 0000000..d9fd6de
--- /dev/null
@@ -0,0 +1,41 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_charset_conv.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="src/lib/lightmediascanner_plugin.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__plugin_8h.html"];
+  Node2 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="src/lib/lightmediascanner_private.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__private_8h.html"];
+  Node3 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="src/lib/lightmediascanner.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8c.html"];
+  Node3 -> Node5 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="src/lib/lightmediascanner_check.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__check_8c.html"];
+  Node3 -> Node6 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="src/lib/lightmediascanner_process.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__process_8c.html"];
+  Node2 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node7 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="src/lib/lightmediascanner_db_private.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__private_8h.html"];
+  Node7 -> Node5 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 -> Node8 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="src/lib/lightmediascanner_db_audio.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__audio_8c.html"];
+  Node7 -> Node9 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="src/lib/lightmediascanner_db_common.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html"];
+  Node7 -> Node10 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="src/lib/lightmediascanner_db_image.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__image_8c.html"];
+  Node7 -> Node11 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="src/lib/lightmediascanner_db_playlist.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__playlist_8c.html"];
+  Node7 -> Node12 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="src/lib/lightmediascanner_db_video.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__video_8c.html"];
+  Node7 -> Node6 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node13 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="src/lib/lightmediascanner_db.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db_8h.html"];
+  Node13 -> Node8 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node10 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node11 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node12 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node14 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="src/lib/lightmediascanner_charset_conv.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__charset__conv_8c.html"];
+}
diff --git a/www/api/lightmediascanner__charset__conv_8h__dep__incl.md5 b/www/api/lightmediascanner__charset__conv_8h__dep__incl.md5
new file mode 100644 (file)
index 0000000..225c894
--- /dev/null
@@ -0,0 +1 @@
+a8d763a8ab47ffcb4f3327d64ff7c79d
\ No newline at end of file
diff --git a/www/api/lightmediascanner__check_8c-source.html b/www/api/lightmediascanner__check_8c-source.html
new file mode 100644 (file)
index 0000000..0a42784
--- /dev/null
@@ -0,0 +1,958 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_check.c Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>src/lib/lightmediascanner_check.c</h1><a href="lightmediascanner__check_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifdef HAVE_CONFIG_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#include "config.h"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#endif</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span>
+<a name="l00025"></a><a class="code" href="lightmediascanner__check_8c.html#369266c24eacffb87046522897a570d5">00025</a> <span class="preprocessor">#define _GNU_SOURCE</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#include &lt;sys/wait.h&gt;</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;sys/stat.h&gt;</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;dirent.h&gt;</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;signal.h&gt;</span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;time.h&gt;</span>
+<a name="l00032"></a>00032 
+<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;string.h&gt;</span>
+<a name="l00036"></a>00036 
+<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="lightmediascanner_8h.html">lightmediascanner.h</a>"</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__private_8h.html">lightmediascanner_private.h</a>"</span>
+<a name="l00039"></a>00039 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
+<a name="l00040"></a>00040 
+<a name="l00041"></a>00041 <span class="keyword">struct </span>master_db {
+<a name="l00042"></a>00042     sqlite3 *handle;
+<a name="l00043"></a>00043     sqlite3_stmt *get_files;
+<a name="l00044"></a>00044 };
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046 <span class="keyword">struct </span>slave_db {
+<a name="l00047"></a>00047     sqlite3 *handle;
+<a name="l00048"></a>00048     sqlite3_stmt *transaction_begin;
+<a name="l00049"></a>00049     sqlite3_stmt *transaction_commit;
+<a name="l00050"></a>00050     sqlite3_stmt *delete_file_info;
+<a name="l00051"></a>00051     sqlite3_stmt *update_file_info;
+<a name="l00052"></a>00052 };
+<a name="l00053"></a>00053 
+<a name="l00054"></a>00054 <span class="keyword">struct </span>single_process_db {
+<a name="l00055"></a>00055     sqlite3 *handle;
+<a name="l00056"></a>00056     sqlite3_stmt *get_files;
+<a name="l00057"></a>00057     sqlite3_stmt *transaction_begin;
+<a name="l00058"></a>00058     sqlite3_stmt *transaction_commit;
+<a name="l00059"></a>00059     sqlite3_stmt *delete_file_info;
+<a name="l00060"></a>00060     sqlite3_stmt *update_file_info;
+<a name="l00061"></a>00061 };
+<a name="l00062"></a>00062 
+<a name="l00063"></a>00063 <span class="comment">/***********************************************************************</span>
+<a name="l00064"></a>00064 <span class="comment"> * Master-Slave communication.</span>
+<a name="l00065"></a>00065 <span class="comment"> ***********************************************************************/</span>
+<a name="l00066"></a>00066 
+<a name="l00067"></a>00067 <span class="keyword">struct </span>comm_finfo {
+<a name="l00068"></a>00068     <span class="keywordtype">int</span> path_len;
+<a name="l00069"></a>00069     <span class="keywordtype">int</span> base;
+<a name="l00070"></a>00070     int64_t id;
+<a name="l00071"></a>00071     time_t mtime;
+<a name="l00072"></a>00072     time_t dtime;
+<a name="l00073"></a>00073     <span class="keywordtype">size_t</span> size;
+<a name="l00074"></a>00074     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flags;
+<a name="l00075"></a><a class="code" href="lightmediascanner__check_8c.html#f8084f435d209d810eb33deaa35fab5e">00075</a> <span class="preprocessor">#define COMM_FINFO_FLAG_OUTDATED 1</span>
+<a name="l00076"></a>00076 <span class="preprocessor"></span>};
+<a name="l00077"></a>00077 
+<a name="l00078"></a>00078 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00079"></a>00079 _master_send_file(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *master, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> finfo, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flags)
+<a name="l00080"></a>00080 {
+<a name="l00081"></a>00081     <span class="keyword">struct </span>comm_finfo ci;
+<a name="l00082"></a>00082 
+<a name="l00083"></a>00083     ci.path_len = finfo.<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>;
+<a name="l00084"></a>00084     ci.base = finfo.<a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a>;
+<a name="l00085"></a>00085     ci.id = finfo.<a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a>;
+<a name="l00086"></a>00086     ci.mtime = finfo.<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a>;
+<a name="l00087"></a>00087     ci.dtime = finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>;
+<a name="l00088"></a>00088     ci.size = finfo.<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a>;
+<a name="l00089"></a>00089     ci.flags = flags;
+<a name="l00090"></a>00090 
+<a name="l00091"></a>00091     <span class="keywordflow">if</span> (write(master-&gt;<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, &amp;ci, <span class="keyword">sizeof</span>(ci)) &lt; 0) {
+<a name="l00092"></a>00092         perror(<span class="stringliteral">"write"</span>);
+<a name="l00093"></a>00093         <span class="keywordflow">return</span> -1;
+<a name="l00094"></a>00094     }
+<a name="l00095"></a>00095 
+<a name="l00096"></a>00096     <span class="keywordflow">if</span> (write(master-&gt;<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, finfo.<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>) &lt; 0) {
+<a name="l00097"></a>00097         perror(<span class="stringliteral">"write"</span>);
+<a name="l00098"></a>00098         <span class="keywordflow">return</span> -1;
+<a name="l00099"></a>00099     }
+<a name="l00100"></a>00100 
+<a name="l00101"></a>00101     <span class="keywordflow">return</span> 0;
+<a name="l00102"></a>00102 }
+<a name="l00103"></a>00103 
+<a name="l00104"></a>00104 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00105"></a>00105 _master_send_finish(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *master)
+<a name="l00106"></a>00106 {
+<a name="l00107"></a>00107     <span class="keyword">struct </span>comm_finfo ci = {-1, -1, -1, -1, -1, -1, 0};
+<a name="l00108"></a>00108 
+<a name="l00109"></a>00109     <span class="keywordflow">if</span> (write(master-&gt;<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, &amp;ci, <span class="keyword">sizeof</span>(ci)) &lt; 0) {
+<a name="l00110"></a>00110         perror(<span class="stringliteral">"write"</span>);
+<a name="l00111"></a>00111         <span class="keywordflow">return</span> -1;
+<a name="l00112"></a>00112     }
+<a name="l00113"></a>00113 
+<a name="l00114"></a>00114     <span class="keywordflow">return</span> 0;
+<a name="l00115"></a>00115 }
+<a name="l00116"></a>00116 
+<a name="l00117"></a>00117 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00118"></a>00118 _master_recv_reply(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *master, <span class="keyword">struct</span> pollfd *pfd, <span class="keywordtype">int</span> *reply, <span class="keywordtype">int</span> timeout)
+<a name="l00119"></a>00119 {
+<a name="l00120"></a>00120     <span class="keywordtype">int</span> r;
+<a name="l00121"></a>00121 
+<a name="l00122"></a>00122     r = poll(pfd, 1, timeout);
+<a name="l00123"></a>00123     <span class="keywordflow">if</span> (r &lt; 0) {
+<a name="l00124"></a>00124         perror(<span class="stringliteral">"poll"</span>);
+<a name="l00125"></a>00125         <span class="keywordflow">return</span> -1;
+<a name="l00126"></a>00126     }
+<a name="l00127"></a>00127 
+<a name="l00128"></a>00128     <span class="keywordflow">if</span> (r == 0)
+<a name="l00129"></a>00129         <span class="keywordflow">return</span> 1;
+<a name="l00130"></a>00130 
+<a name="l00131"></a>00131     <span class="keywordflow">if</span> (read(master-&gt;<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>, reply, <span class="keyword">sizeof</span>(*reply)) != <span class="keyword">sizeof</span>(*reply)) {
+<a name="l00132"></a>00132         perror(<span class="stringliteral">"read"</span>);
+<a name="l00133"></a>00133         <span class="keywordflow">return</span> -2;
+<a name="l00134"></a>00134     }
+<a name="l00135"></a>00135 
+<a name="l00136"></a>00136     <span class="keywordflow">return</span> 0;
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138 
+<a name="l00139"></a>00139 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00140"></a>00140 _slave_send_reply(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *slave, <span class="keywordtype">int</span> reply)
+<a name="l00141"></a>00141 {
+<a name="l00142"></a>00142     <span class="keywordflow">if</span> (write(slave-&gt;<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, &amp;reply, <span class="keyword">sizeof</span>(reply)) == 0) {
+<a name="l00143"></a>00143         perror(<span class="stringliteral">"write"</span>);
+<a name="l00144"></a>00144         <span class="keywordflow">return</span> -1;
+<a name="l00145"></a>00145     }
+<a name="l00146"></a>00146     <span class="keywordflow">return</span> 0;
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148 
+<a name="l00149"></a>00149 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00150"></a>00150 _slave_recv_file(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *slave, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *flags)
+<a name="l00151"></a>00151 {
+<a name="l00152"></a>00152     <span class="keyword">struct </span>comm_finfo ci;
+<a name="l00153"></a>00153     <span class="keyword">static</span> <span class="keywordtype">char</span> path[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a> + 1];
+<a name="l00154"></a>00154     <span class="keywordtype">int</span> r;
+<a name="l00155"></a>00155 
+<a name="l00156"></a>00156     r = read(slave-&gt;<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>, &amp;ci, <span class="keyword">sizeof</span>(ci));
+<a name="l00157"></a>00157     <span class="keywordflow">if</span> (r != <span class="keyword">sizeof</span>(ci)) {
+<a name="l00158"></a>00158         perror(<span class="stringliteral">"read"</span>);
+<a name="l00159"></a>00159         <span class="keywordflow">return</span> -1;
+<a name="l00160"></a>00160     }
+<a name="l00161"></a>00161 
+<a name="l00162"></a>00162     finfo-&gt;<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> = ci.path_len;
+<a name="l00163"></a>00163     finfo-&gt;<a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a> = ci.base;
+<a name="l00164"></a>00164     finfo-&gt;<a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = ci.id;
+<a name="l00165"></a>00165     finfo-&gt;<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = ci.mtime;
+<a name="l00166"></a>00166     finfo-&gt;<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = ci.dtime;
+<a name="l00167"></a>00167     finfo-&gt;<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = ci.size;
+<a name="l00168"></a>00168     finfo-&gt;<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a> = NULL;
+<a name="l00169"></a>00169     *flags = ci.flags;
+<a name="l00170"></a>00170 
+<a name="l00171"></a>00171     <span class="keywordflow">if</span> (ci.path_len == -1)
+<a name="l00172"></a>00172         <span class="keywordflow">return</span> 0;
+<a name="l00173"></a>00173 
+<a name="l00174"></a>00174     <span class="keywordflow">if</span> (ci.path_len &gt; <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>) {
+<a name="l00175"></a>00175         fprintf(stderr, <span class="stringliteral">"ERROR: path too long (%d/%d)\n"</span>,
+<a name="l00176"></a>00176                 ci.path_len, <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>);
+<a name="l00177"></a>00177         <span class="keywordflow">return</span> -2;
+<a name="l00178"></a>00178     }
+<a name="l00179"></a>00179 
+<a name="l00180"></a>00180     r = read(slave-&gt;<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>, path, ci.path_len);
+<a name="l00181"></a>00181     <span class="keywordflow">if</span> (r != ci.path_len) {
+<a name="l00182"></a>00182         fprintf(stderr, <span class="stringliteral">"ERROR: could not read whole path %d/%d\n"</span>,
+<a name="l00183"></a>00183                 r, ci.path_len);
+<a name="l00184"></a>00184         <span class="keywordflow">return</span> -3;
+<a name="l00185"></a>00185     }
+<a name="l00186"></a>00186 
+<a name="l00187"></a>00187     path[ci.path_len] = 0;
+<a name="l00188"></a>00188     finfo-&gt;<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a> = path;
+<a name="l00189"></a>00189     <span class="keywordflow">return</span> 0;
+<a name="l00190"></a>00190 }
+<a name="l00191"></a>00191 
+<a name="l00192"></a>00192 
+<a name="l00193"></a>00193 <span class="comment">/***********************************************************************</span>
+<a name="l00194"></a>00194 <span class="comment"> * Slave-side.</span>
+<a name="l00195"></a>00195 <span class="comment"> ***********************************************************************/</span>
+<a name="l00196"></a>00196 
+<a name="l00197"></a>00197 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00198"></a>00198 _slave_db_compile_all_stmts(<span class="keyword">struct</span> slave_db *db)
+<a name="l00199"></a>00199 {
+<a name="l00200"></a>00200     sqlite3 *handle;
+<a name="l00201"></a>00201 
+<a name="l00202"></a>00202     handle = db-&gt;handle;
+<a name="l00203"></a>00203 
+<a name="l00204"></a>00204     db-&gt;transaction_begin = <a class="code" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lms_db_compile_stmt_begin_transaction</a>(handle);
+<a name="l00205"></a>00205     <span class="keywordflow">if</span> (!db-&gt;transaction_begin)
+<a name="l00206"></a>00206         <span class="keywordflow">return</span> -1;
+<a name="l00207"></a>00207 
+<a name="l00208"></a>00208     db-&gt;transaction_commit = <a class="code" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lms_db_compile_stmt_end_transaction</a>(handle);
+<a name="l00209"></a>00209     <span class="keywordflow">if</span> (!db-&gt;transaction_commit)
+<a name="l00210"></a>00210         <span class="keywordflow">return</span> -2;
+<a name="l00211"></a>00211 
+<a name="l00212"></a>00212     db-&gt;delete_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lms_db_compile_stmt_delete_file_info</a>(handle);
+<a name="l00213"></a>00213     <span class="keywordflow">if</span> (!db-&gt;delete_file_info)
+<a name="l00214"></a>00214         <span class="keywordflow">return</span> -3;
+<a name="l00215"></a>00215 
+<a name="l00216"></a>00216     db-&gt;update_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lms_db_compile_stmt_update_file_info</a>(handle);
+<a name="l00217"></a>00217     <span class="keywordflow">if</span> (!db-&gt;update_file_info)
+<a name="l00218"></a>00218         <span class="keywordflow">return</span> -4;
+<a name="l00219"></a>00219 
+<a name="l00220"></a>00220     <span class="keywordflow">return</span> 0;
+<a name="l00221"></a>00221 }
+<a name="l00222"></a>00222 
+<a name="l00223"></a>00223 <span class="keyword">static</span> <span class="keyword">struct </span>slave_db *
+<a name="l00224"></a>00224 _slave_db_open(<span class="keyword">const</span> <span class="keywordtype">char</span> *db_path)
+<a name="l00225"></a>00225 {
+<a name="l00226"></a>00226     <span class="keyword">struct </span>slave_db *db;
+<a name="l00227"></a>00227 
+<a name="l00228"></a>00228     db = calloc(1, <span class="keyword">sizeof</span>(*db));
+<a name="l00229"></a>00229     <span class="keywordflow">if</span> (!db) {
+<a name="l00230"></a>00230         perror(<span class="stringliteral">"calloc"</span>);
+<a name="l00231"></a>00231         <span class="keywordflow">return</span> NULL;
+<a name="l00232"></a>00232     }
+<a name="l00233"></a>00233 
+<a name="l00234"></a>00234     <span class="keywordflow">if</span> (sqlite3_open(db_path, &amp;db-&gt;handle) != SQLITE_OK) {
+<a name="l00235"></a>00235         fprintf(stderr, <span class="stringliteral">"ERROR: could not open DB \"%s\": %s\n"</span>,
+<a name="l00236"></a>00236                 db_path, sqlite3_errmsg(db-&gt;handle));
+<a name="l00237"></a>00237         <span class="keywordflow">goto</span> error;
+<a name="l00238"></a>00238     }
+<a name="l00239"></a>00239 
+<a name="l00240"></a>00240     <span class="keywordflow">return</span> db;
+<a name="l00241"></a>00241 
+<a name="l00242"></a>00242   error:
+<a name="l00243"></a>00243     sqlite3_close(db-&gt;handle);
+<a name="l00244"></a>00244     free(db);
+<a name="l00245"></a>00245     <span class="keywordflow">return</span> NULL;
+<a name="l00246"></a>00246 }
+<a name="l00247"></a>00247 
+<a name="l00248"></a>00248 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00249"></a>00249 _slave_db_close(<span class="keyword">struct</span> slave_db *db)
+<a name="l00250"></a>00250 {
+<a name="l00251"></a>00251     <span class="keywordflow">if</span> (db-&gt;transaction_begin)
+<a name="l00252"></a>00252         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;transaction_begin, <span class="stringliteral">"transaction_begin"</span>);
+<a name="l00253"></a>00253 
+<a name="l00254"></a>00254     <span class="keywordflow">if</span> (db-&gt;transaction_commit)
+<a name="l00255"></a>00255         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;transaction_commit, <span class="stringliteral">"transaction_commit"</span>);
+<a name="l00256"></a>00256 
+<a name="l00257"></a>00257     <span class="keywordflow">if</span> (db-&gt;delete_file_info)
+<a name="l00258"></a>00258         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;delete_file_info, <span class="stringliteral">"delete_file_info"</span>);
+<a name="l00259"></a>00259 
+<a name="l00260"></a>00260     <span class="keywordflow">if</span> (db-&gt;update_file_info)
+<a name="l00261"></a>00261         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;update_file_info, <span class="stringliteral">"update_file_info"</span>);
+<a name="l00262"></a>00262 
+<a name="l00263"></a>00263     <span class="keywordflow">if</span> (sqlite3_close(db-&gt;handle) != SQLITE_OK) {
+<a name="l00264"></a>00264         fprintf(stderr, <span class="stringliteral">"ERROR: clould not close DB (slave): %s\n"</span>,
+<a name="l00265"></a>00265                 sqlite3_errmsg(db-&gt;handle));
+<a name="l00266"></a>00266         <span class="keywordflow">return</span> -1;
+<a name="l00267"></a>00267     }
+<a name="l00268"></a>00268     free(db);
+<a name="l00269"></a>00269 
+<a name="l00270"></a>00270     <span class="keywordflow">return</span> 0;
+<a name="l00271"></a>00271 }
+<a name="l00272"></a>00272 
+<a name="l00273"></a>00273 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00274"></a>00274 _single_process_db_compile_all_stmts(<span class="keyword">struct</span> single_process_db *db)
+<a name="l00275"></a>00275 {
+<a name="l00276"></a>00276     sqlite3 *handle;
+<a name="l00277"></a>00277 
+<a name="l00278"></a>00278     handle = db-&gt;handle;
+<a name="l00279"></a>00279 
+<a name="l00280"></a>00280     db-&gt;get_files = <a class="code" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lms_db_compile_stmt_get_files</a>(handle);
+<a name="l00281"></a>00281     <span class="keywordflow">if</span> (!db-&gt;get_files)
+<a name="l00282"></a>00282         <span class="keywordflow">return</span> -1;
+<a name="l00283"></a>00283 
+<a name="l00284"></a>00284     db-&gt;transaction_begin = <a class="code" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lms_db_compile_stmt_begin_transaction</a>(handle);
+<a name="l00285"></a>00285     <span class="keywordflow">if</span> (!db-&gt;transaction_begin)
+<a name="l00286"></a>00286         <span class="keywordflow">return</span> -2;
+<a name="l00287"></a>00287 
+<a name="l00288"></a>00288     db-&gt;transaction_commit = <a class="code" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lms_db_compile_stmt_end_transaction</a>(handle);
+<a name="l00289"></a>00289     <span class="keywordflow">if</span> (!db-&gt;transaction_commit)
+<a name="l00290"></a>00290         <span class="keywordflow">return</span> -3;
+<a name="l00291"></a>00291 
+<a name="l00292"></a>00292     db-&gt;delete_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lms_db_compile_stmt_delete_file_info</a>(handle);
+<a name="l00293"></a>00293     <span class="keywordflow">if</span> (!db-&gt;delete_file_info)
+<a name="l00294"></a>00294         <span class="keywordflow">return</span> -4;
+<a name="l00295"></a>00295 
+<a name="l00296"></a>00296     db-&gt;update_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lms_db_compile_stmt_update_file_info</a>(handle);
+<a name="l00297"></a>00297     <span class="keywordflow">if</span> (!db-&gt;update_file_info)
+<a name="l00298"></a>00298         <span class="keywordflow">return</span> -5;
+<a name="l00299"></a>00299 
+<a name="l00300"></a>00300     <span class="keywordflow">return</span> 0;
+<a name="l00301"></a>00301 }
+<a name="l00302"></a>00302 
+<a name="l00303"></a>00303 <span class="keyword">static</span> <span class="keyword">struct </span>single_process_db *
+<a name="l00304"></a>00304 _single_process_db_open(<span class="keyword">const</span> <span class="keywordtype">char</span> *db_path)
+<a name="l00305"></a>00305 {
+<a name="l00306"></a>00306     <span class="keyword">struct </span>single_process_db *db;
+<a name="l00307"></a>00307 
+<a name="l00308"></a>00308     db = calloc(1, <span class="keyword">sizeof</span>(*db));
+<a name="l00309"></a>00309     <span class="keywordflow">if</span> (!db) {
+<a name="l00310"></a>00310         perror(<span class="stringliteral">"calloc"</span>);
+<a name="l00311"></a>00311         <span class="keywordflow">return</span> NULL;
+<a name="l00312"></a>00312     }
+<a name="l00313"></a>00313 
+<a name="l00314"></a>00314     <span class="keywordflow">if</span> (sqlite3_open(db_path, &amp;db-&gt;handle) != SQLITE_OK) {
+<a name="l00315"></a>00315         fprintf(stderr, <span class="stringliteral">"ERROR: could not open DB \"%s\": %s\n"</span>,
+<a name="l00316"></a>00316                 db_path, sqlite3_errmsg(db-&gt;handle));
+<a name="l00317"></a>00317         <span class="keywordflow">goto</span> error;
+<a name="l00318"></a>00318     }
+<a name="l00319"></a>00319 
+<a name="l00320"></a>00320     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lms_db_create_core_tables_if_required</a>(db-&gt;handle) != 0) {
+<a name="l00321"></a>00321         fprintf(stderr, <span class="stringliteral">"ERROR: could not setup tables and indexes.\n"</span>);
+<a name="l00322"></a>00322         <span class="keywordflow">goto</span> error;
+<a name="l00323"></a>00323     }
+<a name="l00324"></a>00324 
+<a name="l00325"></a>00325     <span class="keywordflow">if</span> (_single_process_db_compile_all_stmts(db) != 0) {
+<a name="l00326"></a>00326         fprintf(stderr, <span class="stringliteral">"ERROR: could not compile statements.\n"</span>);
+<a name="l00327"></a>00327         <span class="keywordflow">goto</span> error;
+<a name="l00328"></a>00328     }
+<a name="l00329"></a>00329 
+<a name="l00330"></a>00330     <span class="keywordflow">return</span> db;
+<a name="l00331"></a>00331 
+<a name="l00332"></a>00332   error:
+<a name="l00333"></a>00333     sqlite3_close(db-&gt;handle);
+<a name="l00334"></a>00334     free(db);
+<a name="l00335"></a>00335     <span class="keywordflow">return</span> NULL;
+<a name="l00336"></a>00336 }
+<a name="l00337"></a>00337 
+<a name="l00338"></a>00338 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00339"></a>00339 _single_process_db_close(<span class="keyword">struct</span> single_process_db *db)
+<a name="l00340"></a>00340 {
+<a name="l00341"></a>00341     <span class="keywordflow">if</span> (db-&gt;get_files)
+<a name="l00342"></a>00342         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;get_files, <span class="stringliteral">"get_files"</span>);
+<a name="l00343"></a>00343 
+<a name="l00344"></a>00344     <span class="keywordflow">if</span> (db-&gt;transaction_begin)
+<a name="l00345"></a>00345         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;transaction_begin, <span class="stringliteral">"transaction_begin"</span>);
+<a name="l00346"></a>00346 
+<a name="l00347"></a>00347     <span class="keywordflow">if</span> (db-&gt;transaction_commit)
+<a name="l00348"></a>00348         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;transaction_commit, <span class="stringliteral">"transaction_commit"</span>);
+<a name="l00349"></a>00349 
+<a name="l00350"></a>00350     <span class="keywordflow">if</span> (db-&gt;delete_file_info)
+<a name="l00351"></a>00351         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;delete_file_info, <span class="stringliteral">"delete_file_info"</span>);
+<a name="l00352"></a>00352 
+<a name="l00353"></a>00353     <span class="keywordflow">if</span> (db-&gt;update_file_info)
+<a name="l00354"></a>00354         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;update_file_info, <span class="stringliteral">"update_file_info"</span>);
+<a name="l00355"></a>00355 
+<a name="l00356"></a>00356     <span class="keywordflow">if</span> (sqlite3_close(db-&gt;handle) != SQLITE_OK) {
+<a name="l00357"></a>00357         fprintf(stderr, <span class="stringliteral">"ERROR: clould not close DB (slave): %s\n"</span>,
+<a name="l00358"></a>00358                 sqlite3_errmsg(db-&gt;handle));
+<a name="l00359"></a>00359         <span class="keywordflow">return</span> -1;
+<a name="l00360"></a>00360     }
+<a name="l00361"></a>00361     free(db);
+<a name="l00362"></a>00362 
+<a name="l00363"></a>00363     <span class="keywordflow">return</span> 0;
+<a name="l00364"></a>00364 }
+<a name="l00365"></a>00365 
+<a name="l00366"></a>00366 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00367"></a>00367 _init_sync_send(<span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>)
+<a name="l00368"></a>00368 {
+<a name="l00369"></a>00369     <span class="keywordflow">return</span> _slave_send_reply(fds, 0);
+<a name="l00370"></a>00370 }
+<a name="l00371"></a>00371 
+<a name="l00372"></a>00372 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00373"></a>00373 _slave_work_int(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>, <span class="keyword">struct</span> slave_db *db)
+<a name="l00374"></a>00374 {
+<a name="l00375"></a>00375     <span class="keyword">struct </span><a class="code" href="structlms__file__info.html">lms_file_info</a> finfo;
+<a name="l00376"></a>00376     <span class="keywordtype">void</span> **parser_match;
+<a name="l00377"></a>00377     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> counter, flags;
+<a name="l00378"></a>00378     <span class="keywordtype">int</span> r;
+<a name="l00379"></a>00379 
+<a name="l00380"></a>00380     parser_match = malloc(lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> * <span class="keyword">sizeof</span>(*parser_match));
+<a name="l00381"></a>00381     <span class="keywordflow">if</span> (!parser_match) {
+<a name="l00382"></a>00382         perror(<span class="stringliteral">"malloc"</span>);
+<a name="l00383"></a>00383         <span class="keywordflow">return</span> -6;
+<a name="l00384"></a>00384     }
+<a name="l00385"></a>00385 
+<a name="l00386"></a>00386     _init_sync_send(fds);
+<a name="l00387"></a>00387 
+<a name="l00388"></a>00388     counter = 0;
+<a name="l00389"></a>00389     <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db-&gt;transaction_begin);
+<a name="l00390"></a>00390 
+<a name="l00391"></a>00391     <span class="keywordflow">while</span> (((r = _slave_recv_file(fds, &amp;finfo, &amp;flags)) == 0) &amp;&amp;
+<a name="l00392"></a>00392            finfo.<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> &gt; 0) {
+<a name="l00393"></a>00393         r = <a class="code" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lms_db_update_file_info</a>(db-&gt;update_file_info, &amp;finfo);
+<a name="l00394"></a>00394         <span class="keywordflow">if</span> (r &lt; 0)
+<a name="l00395"></a>00395             fprintf(stderr, <span class="stringliteral">"ERROR: could not update path in DB\n"</span>);
+<a name="l00396"></a>00396         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (flags &amp; <a class="code" href="lightmediascanner__check_8c.html#f8084f435d209d810eb33deaa35fab5e">COMM_FINFO_FLAG_OUTDATED</a>) {
+<a name="l00397"></a>00397             <span class="keywordtype">int</span> used;
+<a name="l00398"></a>00398 
+<a name="l00399"></a>00399             used = <a class="code" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lms_parsers_check_using</a>(lms, parser_match, &amp;finfo);
+<a name="l00400"></a>00400             <span class="keywordflow">if</span> (!used)
+<a name="l00401"></a>00401                 r = 0;
+<a name="l00402"></a>00402             <span class="keywordflow">else</span> {
+<a name="l00403"></a>00403                 r = <a class="code" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a>(lms, db-&gt;handle, parser_match, &amp;finfo);
+<a name="l00404"></a>00404                 <span class="keywordflow">if</span> (r &lt; 0) {
+<a name="l00405"></a>00405                     fprintf(stderr, <span class="stringliteral">"ERROR: pid=%d failed to parse \"%s\".\n"</span>,
+<a name="l00406"></a>00406                             getpid(), finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>);
+<a name="l00407"></a>00407                     <a class="code" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lms_db_delete_file_info</a>(db-&gt;delete_file_info, &amp;finfo);
+<a name="l00408"></a>00408                 }
+<a name="l00409"></a>00409             }
+<a name="l00410"></a>00410         }
+<a name="l00411"></a>00411 
+<a name="l00412"></a>00412         _slave_send_reply(fds, r);
+<a name="l00413"></a>00413         counter++;
+<a name="l00414"></a>00414         <span class="keywordflow">if</span> (counter &gt; lms-&gt;<a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a>) {
+<a name="l00415"></a>00415             <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db-&gt;transaction_commit);
+<a name="l00416"></a>00416             <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db-&gt;transaction_begin);
+<a name="l00417"></a>00417             counter = 0;
+<a name="l00418"></a>00418         }
+<a name="l00419"></a>00419     }
+<a name="l00420"></a>00420 
+<a name="l00421"></a>00421     free(parser_match);
+<a name="l00422"></a>00422     <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db-&gt;transaction_commit);
+<a name="l00423"></a>00423 
+<a name="l00424"></a>00424     <span class="keywordflow">return</span> r;
+<a name="l00425"></a>00425 }
+<a name="l00426"></a>00426 
+<a name="l00427"></a>00427 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00428"></a>00428 _slave_work(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">struct</span> fds *fds)
+<a name="l00429"></a>00429 {
+<a name="l00430"></a>00430     <span class="keyword">struct </span>slave_db *db;
+<a name="l00431"></a>00431     <span class="keywordtype">int</span> r;
+<a name="l00432"></a>00432 
+<a name="l00433"></a>00433     db = _slave_db_open(lms-&gt;<a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>);
+<a name="l00434"></a>00434     <span class="keywordflow">if</span> (!db)
+<a name="l00435"></a>00435         <span class="keywordflow">return</span> -1;
+<a name="l00436"></a>00436 
+<a name="l00437"></a>00437     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lms_parsers_setup</a>(lms, db-&gt;handle) != 0) {
+<a name="l00438"></a>00438         fprintf(stderr, <span class="stringliteral">"ERROR: could not setup parsers.\n"</span>);
+<a name="l00439"></a>00439         r = -2;
+<a name="l00440"></a>00440         <span class="keywordflow">goto</span> end;
+<a name="l00441"></a>00441     }
+<a name="l00442"></a>00442 
+<a name="l00443"></a>00443     <span class="keywordflow">if</span> (_slave_db_compile_all_stmts(db) != 0) {
+<a name="l00444"></a>00444         fprintf(stderr, <span class="stringliteral">"ERROR: could not compile statements.\n"</span>);
+<a name="l00445"></a>00445         r = -3;
+<a name="l00446"></a>00446         <span class="keywordflow">goto</span> end;
+<a name="l00447"></a>00447     }
+<a name="l00448"></a>00448 
+<a name="l00449"></a>00449     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lms_parsers_start</a>(lms, db-&gt;handle) != 0) {
+<a name="l00450"></a>00450         fprintf(stderr, <span class="stringliteral">"ERROR: could not start parsers.\n"</span>);
+<a name="l00451"></a>00451         r = -4;
+<a name="l00452"></a>00452         <span class="keywordflow">goto</span> end;
+<a name="l00453"></a>00453     }
+<a name="l00454"></a>00454     <span class="keywordflow">if</span> (lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> &lt; 1) {
+<a name="l00455"></a>00455         fprintf(stderr, <span class="stringliteral">"ERROR: no parser could be started, exit.\n"</span>);
+<a name="l00456"></a>00456         r = -5;
+<a name="l00457"></a>00457         <span class="keywordflow">goto</span> end;
+<a name="l00458"></a>00458     }
+<a name="l00459"></a>00459 
+<a name="l00460"></a>00460     r = _slave_work_int(lms, fds, db);
+<a name="l00461"></a>00461 
+<a name="l00462"></a>00462   end:
+<a name="l00463"></a>00463     <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(lms, db-&gt;handle);
+<a name="l00464"></a>00464     _slave_db_close(db);
+<a name="l00465"></a>00465     _init_sync_send(fds);
+<a name="l00466"></a>00466 
+<a name="l00467"></a>00467     <span class="keywordflow">return</span> r;
+<a name="l00468"></a>00468 }
+<a name="l00469"></a>00469 
+<a name="l00470"></a>00470 
+<a name="l00471"></a>00471 <span class="comment">/***********************************************************************</span>
+<a name="l00472"></a>00472 <span class="comment"> * Master-side.</span>
+<a name="l00473"></a>00473 <span class="comment"> ***********************************************************************/</span>
+<a name="l00474"></a>00474 
+<a name="l00475"></a>00475 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00476"></a>00476 _master_db_compile_all_stmts(<span class="keyword">struct</span> master_db *db)
+<a name="l00477"></a>00477 {
+<a name="l00478"></a>00478     sqlite3 *handle;
+<a name="l00479"></a>00479 
+<a name="l00480"></a>00480     handle = db-&gt;handle;
+<a name="l00481"></a>00481 
+<a name="l00482"></a>00482     db-&gt;get_files = <a class="code" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lms_db_compile_stmt_get_files</a>(handle);
+<a name="l00483"></a>00483     <span class="keywordflow">if</span> (!db-&gt;get_files)
+<a name="l00484"></a>00484         <span class="keywordflow">return</span> -1;
+<a name="l00485"></a>00485 
+<a name="l00486"></a>00486     <span class="keywordflow">return</span> 0;
+<a name="l00487"></a>00487 }
+<a name="l00488"></a>00488 
+<a name="l00489"></a>00489 <span class="keyword">static</span> <span class="keyword">struct </span>master_db *
+<a name="l00490"></a>00490 _master_db_open(<span class="keyword">const</span> <span class="keywordtype">char</span> *db_path)
+<a name="l00491"></a>00491 {
+<a name="l00492"></a>00492     <span class="keyword">struct </span>master_db *db;
+<a name="l00493"></a>00493 
+<a name="l00494"></a>00494     db = calloc(1, <span class="keyword">sizeof</span>(*db));
+<a name="l00495"></a>00495     <span class="keywordflow">if</span> (!db) {
+<a name="l00496"></a>00496         perror(<span class="stringliteral">"calloc"</span>);
+<a name="l00497"></a>00497         <span class="keywordflow">return</span> NULL;
+<a name="l00498"></a>00498     }
+<a name="l00499"></a>00499 
+<a name="l00500"></a>00500     <span class="keywordflow">if</span> (sqlite3_open(db_path, &amp;db-&gt;handle) != SQLITE_OK) {
+<a name="l00501"></a>00501         fprintf(stderr, <span class="stringliteral">"ERROR: could not open DB \"%s\": %s\n"</span>,
+<a name="l00502"></a>00502                 db_path, sqlite3_errmsg(db-&gt;handle));
+<a name="l00503"></a>00503         <span class="keywordflow">goto</span> error;
+<a name="l00504"></a>00504     }
+<a name="l00505"></a>00505 
+<a name="l00506"></a>00506     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lms_db_create_core_tables_if_required</a>(db-&gt;handle) != 0) {
+<a name="l00507"></a>00507         fprintf(stderr, <span class="stringliteral">"ERROR: could not setup tables and indexes.\n"</span>);
+<a name="l00508"></a>00508         <span class="keywordflow">goto</span> error;
+<a name="l00509"></a>00509     }
+<a name="l00510"></a>00510 
+<a name="l00511"></a>00511     <span class="keywordflow">if</span> (_master_db_compile_all_stmts(db) != 0) {
+<a name="l00512"></a>00512         fprintf(stderr, <span class="stringliteral">"ERROR: could not compile statements.\n"</span>);
+<a name="l00513"></a>00513         <span class="keywordflow">goto</span> error;
+<a name="l00514"></a>00514     }
+<a name="l00515"></a>00515 
+<a name="l00516"></a>00516     <span class="keywordflow">return</span> db;
+<a name="l00517"></a>00517 
+<a name="l00518"></a>00518   error:
+<a name="l00519"></a>00519     sqlite3_close(db-&gt;handle);
+<a name="l00520"></a>00520     free(db);
+<a name="l00521"></a>00521     <span class="keywordflow">return</span> NULL;
+<a name="l00522"></a>00522 }
+<a name="l00523"></a>00523 
+<a name="l00524"></a>00524 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00525"></a>00525 _master_db_close(<span class="keyword">struct</span> master_db *db)
+<a name="l00526"></a>00526 {
+<a name="l00527"></a>00527     <span class="keywordflow">if</span> (db-&gt;get_files)
+<a name="l00528"></a>00528         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;get_files, <span class="stringliteral">"get_files"</span>);
+<a name="l00529"></a>00529 
+<a name="l00530"></a>00530     <span class="keywordflow">if</span> (sqlite3_close(db-&gt;handle) != SQLITE_OK) {
+<a name="l00531"></a>00531         fprintf(stderr, <span class="stringliteral">"ERROR: clould not close DB (master): %s\n"</span>,
+<a name="l00532"></a>00532                 sqlite3_errmsg(db-&gt;handle));
+<a name="l00533"></a>00533         <span class="keywordflow">return</span> -1;
+<a name="l00534"></a>00534     }
+<a name="l00535"></a>00535     free(db);
+<a name="l00536"></a>00536 
+<a name="l00537"></a>00537     <span class="keywordflow">return</span> 0;
+<a name="l00538"></a>00538 }
+<a name="l00539"></a>00539 
+<a name="l00540"></a>00540 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00541"></a>00541 _calc_base(<span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
+<a name="l00542"></a>00542 {
+<a name="l00543"></a>00543     <span class="keywordtype">int</span> i;
+<a name="l00544"></a>00544 
+<a name="l00545"></a>00545     <span class="keywordflow">for</span> (i = finfo-&gt;<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> - 1; i &gt;= 0; i--)
+<a name="l00546"></a>00546         <span class="keywordflow">if</span> (finfo-&gt;<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>[i] == <span class="charliteral">'/'</span>) {
+<a name="l00547"></a>00547             finfo-&gt;<a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a> = i;
+<a name="l00548"></a>00548             <span class="keywordflow">return</span>;
+<a name="l00549"></a>00549         }
+<a name="l00550"></a>00550 }
+<a name="l00551"></a>00551 
+<a name="l00552"></a>00552 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
+<a name="l00553"></a>00553 _update_finfo_from_stmt(<span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo, sqlite3_stmt *stmt)
+<a name="l00554"></a>00554 {
+<a name="l00555"></a>00555     finfo-&gt;<a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = sqlite3_column_int64(stmt, 0);
+<a name="l00556"></a>00556     finfo-&gt;<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a> = sqlite3_column_blob(stmt, 1);
+<a name="l00557"></a>00557     finfo-&gt;<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> = sqlite3_column_bytes(stmt, 1);
+<a name="l00558"></a>00558     finfo-&gt;<a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a> = 0;
+<a name="l00559"></a>00559     finfo-&gt;<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = sqlite3_column_int(stmt, 2);
+<a name="l00560"></a>00560     finfo-&gt;<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = sqlite3_column_int(stmt, 3);
+<a name="l00561"></a>00561     finfo-&gt;<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = sqlite3_column_int(stmt, 4);
+<a name="l00562"></a>00562 }
+<a name="l00563"></a>00563 
+<a name="l00564"></a>00564 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
+<a name="l00565"></a>00565 _update_finfo_from_stat(<span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo, <span class="keyword">const</span> <span class="keyword">struct</span> stat *st)
+<a name="l00566"></a>00566 {
+<a name="l00567"></a>00567     finfo-&gt;<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = st-&gt;st_mtime;
+<a name="l00568"></a>00568     finfo-&gt;<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = st-&gt;st_size;
+<a name="l00569"></a>00569     finfo-&gt;<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = 0;
+<a name="l00570"></a>00570 }
+<a name="l00571"></a>00571 
+<a name="l00572"></a>00572 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
+<a name="l00573"></a>00573 _report_progress(<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lms_progress_status_t</a> status)
+<a name="l00574"></a>00574 {
+<a name="l00575"></a>00575     <a class="code" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> cb;
+<a name="l00576"></a>00576     <a class="code" href="structlms.html">lms_t</a> *lms = info-&gt;<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>;
+<a name="l00577"></a>00577 
+<a name="l00578"></a>00578     cb = lms-&gt;<a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#94615d22fba40d580a8a0055d28221c4">cb</a>;
+<a name="l00579"></a>00579     <span class="keywordflow">if</span> (!cb)
+<a name="l00580"></a>00580         <span class="keywordflow">return</span>;
+<a name="l00581"></a>00581 
+<a name="l00582"></a>00582     cb(lms, finfo-&gt;<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, finfo-&gt;<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>, status, lms-&gt;<a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a>);
+<a name="l00583"></a>00583 }
+<a name="l00584"></a>00584 
+<a name="l00585"></a>00585 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00586"></a>00586 _finfo_update(<span class="keywordtype">void</span> *db_ptr, <span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *flags)
+<a name="l00587"></a>00587 {
+<a name="l00588"></a>00588     <span class="keyword">struct </span>master_db *db = db_ptr;
+<a name="l00589"></a>00589     <span class="keyword">struct </span>stat st;
+<a name="l00590"></a>00590 
+<a name="l00591"></a>00591     _update_finfo_from_stmt(finfo, db-&gt;get_files);
+<a name="l00592"></a>00592 
+<a name="l00593"></a>00593     *flags = 0;
+<a name="l00594"></a>00594     <span class="keywordflow">if</span> (stat(finfo-&gt;<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, &amp;st) == 0) {
+<a name="l00595"></a>00595         <span class="keywordflow">if</span> (st.st_mtime == finfo-&gt;<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> &amp;&amp; st.st_size == finfo-&gt;<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a>) {
+<a name="l00596"></a>00596             <span class="keywordflow">if</span> (finfo-&gt;<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> == 0) {
+<a name="l00597"></a>00597                 _report_progress(info, finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370204315e58ce4b7dfa6421b4d1556655d">LMS_PROGRESS_STATUS_UP_TO_DATE</a>);
+<a name="l00598"></a>00598                 <span class="keywordflow">return</span> 0;
+<a name="l00599"></a>00599             } <span class="keywordflow">else</span>
+<a name="l00600"></a>00600                 finfo-&gt;<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = 0;
+<a name="l00601"></a>00601         } <span class="keywordflow">else</span> {
+<a name="l00602"></a>00602             _update_finfo_from_stat(finfo, &amp;st);
+<a name="l00603"></a>00603             *flags |= COMM_FINFO_FLAG_OUTDATED;
+<a name="l00604"></a>00604         }
+<a name="l00605"></a>00605     } <span class="keywordflow">else</span> {
+<a name="l00606"></a>00606         <span class="keywordflow">if</span> (finfo-&gt;<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>)
+<a name="l00607"></a>00607             <span class="keywordflow">return</span> 0;
+<a name="l00608"></a>00608         <span class="keywordflow">else</span>
+<a name="l00609"></a>00609             finfo-&gt;<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = time(NULL);
+<a name="l00610"></a>00610     }
+<a name="l00611"></a>00611 
+<a name="l00612"></a>00612     _calc_base(finfo);
+<a name="l00613"></a>00613 
+<a name="l00614"></a>00614     <span class="keywordflow">return</span> 1;
+<a name="l00615"></a>00615 }
+<a name="l00616"></a>00616 
+<a name="l00617"></a>00617 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00618"></a>00618 _check_row(<span class="keywordtype">void</span> *db_ptr, <span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info)
+<a name="l00619"></a>00619 {
+<a name="l00620"></a>00620     <span class="keyword">struct </span><a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a> = (<span class="keyword">struct </span>pinfo *)info;
+<a name="l00621"></a>00621     <span class="keyword">struct </span>master_db *db = db_ptr;
+<a name="l00622"></a>00622     <span class="keyword">struct </span><a class="code" href="structlms__file__info.html">lms_file_info</a> finfo;
+<a name="l00623"></a>00623     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flags;
+<a name="l00624"></a>00624     <span class="keywordtype">int</span> r, reply;
+<a name="l00625"></a>00625 
+<a name="l00626"></a>00626     r = _finfo_update(db, info, &amp;finfo, &amp;flags);
+<a name="l00627"></a>00627     <span class="keywordflow">if</span> (r == 0)
+<a name="l00628"></a>00628         <span class="keywordflow">return</span> r;
+<a name="l00629"></a>00629 
+<a name="l00630"></a>00630     <span class="keywordflow">if</span> (_master_send_file(&amp;pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, finfo, flags) != 0)
+<a name="l00631"></a>00631         <span class="keywordflow">return</span> -1;
+<a name="l00632"></a>00632 
+<a name="l00633"></a>00633     r = _master_recv_reply(&amp;pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, &amp;pinfo-&gt;<a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>, &amp;reply,
+<a name="l00634"></a>00634                            pinfo-&gt;<a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>-&gt;<a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>);
+<a name="l00635"></a>00635     <span class="keywordflow">if</span> (r &lt; 0) {
+<a name="l00636"></a>00636         _report_progress(info, &amp;finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082">LMS_PROGRESS_STATUS_ERROR_COMM</a>);
+<a name="l00637"></a>00637         <span class="keywordflow">return</span> -2;
+<a name="l00638"></a>00638     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r == 1) {
+<a name="l00639"></a>00639         fprintf(stderr, <span class="stringliteral">"ERROR: slave took too long, restart %d\n"</span>,
+<a name="l00640"></a>00640                 pinfo-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>);
+<a name="l00641"></a>00641         _report_progress(info, &amp;finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152">LMS_PROGRESS_STATUS_KILLED</a>);
+<a name="l00642"></a>00642         <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lms_restart_slave</a>(pinfo, _slave_work) != 0)
+<a name="l00643"></a>00643             <span class="keywordflow">return</span> -3;
+<a name="l00644"></a>00644         <span class="keywordflow">return</span> 1;
+<a name="l00645"></a>00645     } <span class="keywordflow">else</span> {
+<a name="l00646"></a>00646         <span class="keywordflow">if</span> (reply &lt; 0) {
+<a name="l00647"></a>00647             fprintf(stderr, <span class="stringliteral">"ERROR: pid=%d failed to parse \"%s\".\n"</span>,
+<a name="l00648"></a>00648                     getpid(), finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>);
+<a name="l00649"></a>00649             _report_progress(info, &amp;finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">LMS_PROGRESS_STATUS_ERROR_PARSE</a>);
+<a name="l00650"></a>00650             <span class="keywordflow">return</span> (-reply) &lt;&lt; 8;
+<a name="l00651"></a>00651         } <span class="keywordflow">else</span> {
+<a name="l00652"></a>00652             <span class="keywordflow">if</span> (!finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>)
+<a name="l00653"></a>00653                 _report_progress(info, &amp;finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">LMS_PROGRESS_STATUS_PROCESSED</a>);
+<a name="l00654"></a>00654             <span class="keywordflow">else</span>
+<a name="l00655"></a>00655                 _report_progress(info, &amp;finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11">LMS_PROGRESS_STATUS_DELETED</a>);
+<a name="l00656"></a>00656             <span class="keywordflow">return</span> reply;
+<a name="l00657"></a>00657         }
+<a name="l00658"></a>00658     }
+<a name="l00659"></a>00659 }
+<a name="l00660"></a>00660 
+<a name="l00661"></a>00661 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00662"></a>00662 _check_row_single_process(<span class="keywordtype">void</span> *db_ptr, <span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info)
+<a name="l00663"></a>00663 {
+<a name="l00664"></a>00664     <span class="keyword">struct </span><a class="code" href="structsinfo.html">sinfo</a> *<a class="code" href="structsinfo.html">sinfo</a> = (<span class="keyword">struct </span>sinfo *)info;
+<a name="l00665"></a>00665     <span class="keyword">struct </span>single_process_db *db = db_ptr;
+<a name="l00666"></a>00666     <span class="keyword">struct </span><a class="code" href="structlms__file__info.html">lms_file_info</a> finfo;
+<a name="l00667"></a>00667     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flags;
+<a name="l00668"></a>00668     <span class="keywordtype">int</span> r;
+<a name="l00669"></a>00669 
+<a name="l00670"></a>00670     <span class="keywordtype">void</span> **parser_match = sinfo-&gt;<a class="code" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">parser_match</a>;
+<a name="l00671"></a>00671     <a class="code" href="structlms.html">lms_t</a> *lms = info-&gt;<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>;
+<a name="l00672"></a>00672 
+<a name="l00673"></a>00673     r = _finfo_update(db, info, &amp;finfo, &amp;flags);
+<a name="l00674"></a>00674     <span class="keywordflow">if</span> (r == 0)
+<a name="l00675"></a>00675         <span class="keywordflow">return</span> r;
+<a name="l00676"></a>00676 
+<a name="l00677"></a>00677     r = <a class="code" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lms_db_update_file_info</a>(db-&gt;update_file_info, &amp;finfo);
+<a name="l00678"></a>00678     <span class="keywordflow">if</span> (r &lt; 0)
+<a name="l00679"></a>00679         fprintf(stderr, <span class="stringliteral">"ERROR: could not update path in DB\n"</span>);
+<a name="l00680"></a>00680     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (flags &amp; COMM_FINFO_FLAG_OUTDATED) {
+<a name="l00681"></a>00681         <span class="keywordtype">int</span> used;
+<a name="l00682"></a>00682 
+<a name="l00683"></a>00683         used = <a class="code" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lms_parsers_check_using</a>(lms, parser_match, &amp;finfo);
+<a name="l00684"></a>00684         <span class="keywordflow">if</span> (!used)
+<a name="l00685"></a>00685             r = 0;
+<a name="l00686"></a>00686         <span class="keywordflow">else</span> {
+<a name="l00687"></a>00687             r = <a class="code" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a>(lms, db-&gt;handle, parser_match, &amp;finfo);
+<a name="l00688"></a>00688             <span class="keywordflow">if</span> (r &lt; 0) {
+<a name="l00689"></a>00689                 fprintf(stderr, <span class="stringliteral">"ERROR: pid=%d failed to parse \"%s\".\n"</span>,
+<a name="l00690"></a>00690                         getpid(), finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>);
+<a name="l00691"></a>00691                 <a class="code" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lms_db_delete_file_info</a>(db-&gt;delete_file_info, &amp;finfo);
+<a name="l00692"></a>00692             }
+<a name="l00693"></a>00693         }
+<a name="l00694"></a>00694     }
+<a name="l00695"></a>00695 
+<a name="l00696"></a>00696     <span class="keywordflow">if</span> (r &lt; 0) {
+<a name="l00697"></a>00697         _report_progress(info, &amp;finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">LMS_PROGRESS_STATUS_ERROR_PARSE</a>);
+<a name="l00698"></a>00698         <span class="keywordflow">return</span> (-r) &lt;&lt; 8;
+<a name="l00699"></a>00699     } <span class="keywordflow">else</span> {
+<a name="l00700"></a>00700         sinfo-&gt;<a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a>++;
+<a name="l00701"></a>00701         <span class="keywordflow">if</span> (sinfo-&gt;<a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a> &gt; lms-&gt;<a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a>) {
+<a name="l00702"></a>00702             <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db-&gt;transaction_commit);
+<a name="l00703"></a>00703             <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db-&gt;transaction_begin);
+<a name="l00704"></a>00704             sinfo-&gt;<a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a> = 0;
+<a name="l00705"></a>00705         }
+<a name="l00706"></a>00706 
+<a name="l00707"></a>00707         <span class="keywordflow">if</span> (!finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>)
+<a name="l00708"></a>00708             _report_progress(info, &amp;finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">LMS_PROGRESS_STATUS_PROCESSED</a>);
+<a name="l00709"></a>00709         <span class="keywordflow">else</span>
+<a name="l00710"></a>00710             _report_progress(info, &amp;finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11">LMS_PROGRESS_STATUS_DELETED</a>);
+<a name="l00711"></a>00711         <span class="keywordflow">return</span> r;
+<a name="l00712"></a>00712     }
+<a name="l00713"></a>00713 }
+<a name="l00714"></a>00714 
+<a name="l00715"></a>00715 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00716"></a>00716 _init_sync_wait(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> restart)
+<a name="l00717"></a>00717 {
+<a name="l00718"></a>00718     <span class="keywordtype">int</span> r, reply;
+<a name="l00719"></a>00719 
+<a name="l00720"></a>00720     <span class="keywordflow">do</span> {
+<a name="l00721"></a>00721         r = _master_recv_reply(&amp;pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, &amp;pinfo-&gt;<a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>, &amp;reply,
+<a name="l00722"></a>00722                                pinfo-&gt;<a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>-&gt;<a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>);
+<a name="l00723"></a>00723         <span class="keywordflow">if</span> (r &lt; 0)
+<a name="l00724"></a>00724             <span class="keywordflow">return</span> -1;
+<a name="l00725"></a>00725         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r == 1 &amp;&amp; restart) {
+<a name="l00726"></a>00726             fprintf(stderr, <span class="stringliteral">"ERROR: slave took too long, restart %d\n"</span>,
+<a name="l00727"></a>00727                     pinfo-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>);
+<a name="l00728"></a>00728             <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lms_restart_slave</a>(pinfo, _slave_work) != 0)
+<a name="l00729"></a>00729                 <span class="keywordflow">return</span> -2;
+<a name="l00730"></a>00730         }
+<a name="l00731"></a>00731     } <span class="keywordflow">while</span> (r != 0 &amp;&amp; restart);
+<a name="l00732"></a>00732 
+<a name="l00733"></a>00733     <span class="keywordflow">return</span> r;
+<a name="l00734"></a>00734 }
+<a name="l00735"></a>00735 
+<a name="l00736"></a>00736 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00737"></a>00737 _master_dummy_send_finish(<span class="keyword">const</span> <span class="keyword">struct</span> fds *master)
+<a name="l00738"></a>00738 {
+<a name="l00739"></a>00739     <span class="keywordflow">return</span> 0;
+<a name="l00740"></a>00740 }
+<a name="l00741"></a>00741 
+<a name="l00742"></a>00742 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00743"></a>00743 _db_files_loop(<span class="keywordtype">void</span> *db_ptr, <span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <a class="code" href="lightmediascanner__private_8h.html#818aa1ae6bb03151823bbd9b56bd0801">check_row_callback_t</a> check_row)
+<a name="l00744"></a>00744 {
+<a name="l00745"></a>00745     <span class="keyword">struct </span>master_db *db = db_ptr;
+<a name="l00746"></a>00746     <a class="code" href="structlms.html">lms_t</a> *lms = info-&gt;<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>;
+<a name="l00747"></a>00747     <span class="keywordtype">int</span> r;
+<a name="l00748"></a>00748 
+<a name="l00749"></a>00749     <span class="keywordflow">do</span> {
+<a name="l00750"></a>00750         r = sqlite3_step(db-&gt;get_files);
+<a name="l00751"></a>00751         <span class="keywordflow">if</span> (r == SQLITE_ROW) {
+<a name="l00752"></a>00752             <span class="keywordflow">if</span> (check_row(db_ptr, info) &lt; 0) {
+<a name="l00753"></a>00753                 fprintf(stderr, <span class="stringliteral">"ERROR: could not check row.\n"</span>);
+<a name="l00754"></a>00754                 <span class="keywordflow">return</span> -1;
+<a name="l00755"></a>00755             }
+<a name="l00756"></a>00756         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00757"></a>00757             fprintf(stderr, <span class="stringliteral">"ERROR: could not begin transaction: %s\n"</span>,
+<a name="l00758"></a>00758                     sqlite3_errmsg(db-&gt;handle));
+<a name="l00759"></a>00759             <span class="keywordflow">return</span> -2;
+<a name="l00760"></a>00760         }
+<a name="l00761"></a>00761     } <span class="keywordflow">while</span> (r != SQLITE_DONE &amp;&amp; !lms-&gt;<a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a>);
+<a name="l00762"></a>00762 
+<a name="l00763"></a>00763     <span class="keywordflow">return</span> 0;
+<a name="l00764"></a>00764 }
+<a name="l00765"></a>00765 
+<a name="l00766"></a>00766 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00767"></a>00767 _check(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> len, <span class="keywordtype">char</span> *path)
+<a name="l00768"></a>00768 {
+<a name="l00769"></a>00769     <span class="keywordtype">char</span> query[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a> + 2];
+<a name="l00770"></a>00770     <span class="keyword">struct </span>master_db *db;
+<a name="l00771"></a>00771     <span class="keywordtype">int</span> ret;
+<a name="l00772"></a>00772 
+<a name="l00773"></a>00773     db = _master_db_open(pinfo-&gt;<a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>-&gt;<a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>);
+<a name="l00774"></a>00774     <span class="keywordflow">if</span> (!db)
+<a name="l00775"></a>00775         <span class="keywordflow">return</span> -1;
+<a name="l00776"></a>00776 
+<a name="l00777"></a>00777     memcpy(query, path, len);
+<a name="l00778"></a>00778     query[len] = <span class="charliteral">'%'</span>;
+<a name="l00779"></a>00779     query[len + 1] = <span class="charliteral">'\0'</span>;
+<a name="l00780"></a>00780     ret = <a class="code" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">lms_db_get_files</a>(db-&gt;get_files, query, len + 1);
+<a name="l00781"></a>00781     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00782"></a>00782         <span class="keywordflow">goto</span> end;
+<a name="l00783"></a>00783 
+<a name="l00784"></a>00784     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave</a>(pinfo, _slave_work) != 0) {
+<a name="l00785"></a>00785         ret = -2;
+<a name="l00786"></a>00786         <span class="keywordflow">goto</span> end;
+<a name="l00787"></a>00787     }
+<a name="l00788"></a>00788 
+<a name="l00789"></a>00789     _init_sync_wait(pinfo, 1);
+<a name="l00790"></a>00790 
+<a name="l00791"></a>00791     ret = _db_files_loop(db, (<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *)pinfo, _check_row);
+<a name="l00792"></a>00792 
+<a name="l00793"></a>00793     _master_send_finish(&amp;pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>);
+<a name="l00794"></a>00794     _init_sync_wait(pinfo, 0);
+<a name="l00795"></a>00795     <a class="code" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lms_finish_slave</a>(pinfo, _master_dummy_send_finish);
+<a name="l00796"></a>00796   end:
+<a name="l00797"></a>00797     <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(db-&gt;get_files);
+<a name="l00798"></a>00798     _master_db_close(db);
+<a name="l00799"></a>00799 
+<a name="l00800"></a>00800     <span class="keywordflow">return</span> ret;
+<a name="l00801"></a>00801 }
+<a name="l00802"></a>00802 
+<a name="l00803"></a>00803 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00804"></a>00804 _check_single_process(<span class="keyword">struct</span> sinfo *sinfo, <span class="keywordtype">int</span> len, <span class="keywordtype">char</span> *path)
+<a name="l00805"></a>00805 {
+<a name="l00806"></a>00806     <span class="keyword">struct </span>single_process_db *db;
+<a name="l00807"></a>00807     <span class="keywordtype">char</span> query[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a> + 2];
+<a name="l00808"></a>00808     <span class="keywordtype">void</span> **parser_match;
+<a name="l00809"></a>00809     <a class="code" href="structlms.html">lms_t</a> *lms;
+<a name="l00810"></a>00810     <span class="keywordtype">int</span> ret;
+<a name="l00811"></a>00811 
+<a name="l00812"></a>00812     lms = sinfo-&gt;<a class="code" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>;
+<a name="l00813"></a>00813     db = _single_process_db_open(lms-&gt;<a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>);
+<a name="l00814"></a>00814     <span class="keywordflow">if</span> (!db)
+<a name="l00815"></a>00815         <span class="keywordflow">return</span> -1;
+<a name="l00816"></a>00816 
+<a name="l00817"></a>00817     memcpy(query, path, len);
+<a name="l00818"></a>00818     query[len] = <span class="charliteral">'%'</span>;
+<a name="l00819"></a>00819     query[len + 1] = <span class="charliteral">'\0'</span>;
+<a name="l00820"></a>00820     ret = <a class="code" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">lms_db_get_files</a>(db-&gt;get_files, query, len + 1);
+<a name="l00821"></a>00821     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00822"></a>00822         <span class="keywordflow">goto</span> end;
+<a name="l00823"></a>00823 
+<a name="l00824"></a>00824     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lms_parsers_setup</a>(lms, db-&gt;handle) != 0) {
+<a name="l00825"></a>00825         fprintf(stderr, <span class="stringliteral">"ERROR: could not setup parsers.\n"</span>);
+<a name="l00826"></a>00826         ret = -2;
+<a name="l00827"></a>00827         <span class="keywordflow">goto</span> end;
+<a name="l00828"></a>00828     }
+<a name="l00829"></a>00829 
+<a name="l00830"></a>00830     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lms_parsers_start</a>(lms, db-&gt;handle) != 0) {
+<a name="l00831"></a>00831         fprintf(stderr, <span class="stringliteral">"ERROR: could not start parsers.\n"</span>);
+<a name="l00832"></a>00832         ret = -3;
+<a name="l00833"></a>00833         <span class="keywordflow">goto</span> end;
+<a name="l00834"></a>00834     }
+<a name="l00835"></a>00835 
+<a name="l00836"></a>00836     <span class="keywordflow">if</span> (lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> &lt; 1) {
+<a name="l00837"></a>00837         fprintf(stderr, <span class="stringliteral">"ERROR: no parser could be started, exit.\n"</span>);
+<a name="l00838"></a>00838         ret = -4;
+<a name="l00839"></a>00839         <span class="keywordflow">goto</span> end;
+<a name="l00840"></a>00840     }
+<a name="l00841"></a>00841 
+<a name="l00842"></a>00842     parser_match = malloc(lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> * <span class="keyword">sizeof</span>(*parser_match));
+<a name="l00843"></a>00843     <span class="keywordflow">if</span> (!parser_match) {
+<a name="l00844"></a>00844         perror(<span class="stringliteral">"malloc"</span>);
+<a name="l00845"></a>00845         ret = -5;
+<a name="l00846"></a>00846         <span class="keywordflow">goto</span> end;
+<a name="l00847"></a>00847     }
+<a name="l00848"></a>00848 
+<a name="l00849"></a>00849     sinfo-&gt;<a class="code" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">parser_match</a> = parser_match;
+<a name="l00850"></a>00850 
+<a name="l00851"></a>00851     <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db-&gt;transaction_begin);
+<a name="l00852"></a>00852 
+<a name="l00853"></a>00853     ret = _db_files_loop(db, (<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *)sinfo, _check_row_single_process);
+<a name="l00854"></a>00854 
+<a name="l00855"></a>00855     free(parser_match);
+<a name="l00856"></a>00856     <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db-&gt;transaction_commit);
+<a name="l00857"></a>00857   end:
+<a name="l00858"></a>00858     <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(lms, db-&gt;handle);
+<a name="l00859"></a>00859     <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(db-&gt;get_files);
+<a name="l00860"></a>00860     _single_process_db_close(db);
+<a name="l00861"></a>00861 
+<a name="l00862"></a>00862     <span class="keywordflow">return</span> ret;
+<a name="l00863"></a>00863 }
+<a name="l00864"></a>00864 
+<a name="l00865"></a>00865 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00866"></a>00866 _lms_check_check_valid(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *path)
+<a name="l00867"></a>00867 {
+<a name="l00868"></a>00868     <span class="keywordflow">if</span> (!lms)
+<a name="l00869"></a>00869         <span class="keywordflow">return</span> -1;
+<a name="l00870"></a>00870 
+<a name="l00871"></a>00871     <span class="keywordflow">if</span> (!path)
+<a name="l00872"></a>00872         <span class="keywordflow">return</span> -2;
+<a name="l00873"></a>00873 
+<a name="l00874"></a>00874     <span class="keywordflow">if</span> (lms-&gt;<a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>) {
+<a name="l00875"></a>00875         fprintf(stderr, <span class="stringliteral">"ERROR: is already processing.\n"</span>);
+<a name="l00876"></a>00876         <span class="keywordflow">return</span> -3;
+<a name="l00877"></a>00877     }
+<a name="l00878"></a>00878 
+<a name="l00879"></a>00879     <span class="keywordflow">if</span> (!lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>) {
+<a name="l00880"></a>00880         fprintf(stderr, <span class="stringliteral">"ERROR: no plugins registered.\n"</span>);
+<a name="l00881"></a>00881         <span class="keywordflow">return</span> -4;
+<a name="l00882"></a>00882     }
+<a name="l00883"></a>00883 
+<a name="l00884"></a>00884     <span class="keywordflow">return</span> 0;
+<a name="l00885"></a>00885 }
+<a name="l00886"></a>00886 
+<a name="l00899"></a>00899 <span class="keywordtype">int</span>
+<a name="l00900"></a><a class="code" href="lightmediascanner__check_8c.html#859492d896e816498edb471315efced1">00900</a> <a class="code" href="lightmediascanner_8h.html#5b70063cf19648de70bb145404aa3d0b">lms_check</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path)
+<a name="l00901"></a>00901 {
+<a name="l00902"></a>00902     <span class="keywordtype">char</span> path[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>];
+<a name="l00903"></a>00903     <span class="keyword">struct </span>pinfo pinfo;
+<a name="l00904"></a>00904     <span class="keywordtype">int</span> r;
+<a name="l00905"></a>00905 
+<a name="l00906"></a>00906     r = _lms_check_check_valid(lms, top_path);
+<a name="l00907"></a>00907     <span class="keywordflow">if</span> (r &lt; 0)
+<a name="l00908"></a>00908         <span class="keywordflow">return</span> r;
+<a name="l00909"></a>00909 
+<a name="l00910"></a>00910     pinfo.<a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a> = lms;
+<a name="l00911"></a>00911 
+<a name="l00912"></a>00912     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lms_create_pipes</a>(&amp;pinfo) != 0) {
+<a name="l00913"></a>00913         r = -5;
+<a name="l00914"></a>00914         <span class="keywordflow">goto</span> end;
+<a name="l00915"></a>00915     }
+<a name="l00916"></a>00916 
+<a name="l00917"></a>00917     <span class="keywordflow">if</span> (realpath(top_path, path) == NULL) {
+<a name="l00918"></a>00918         perror(<span class="stringliteral">"realpath"</span>);
+<a name="l00919"></a>00919         r = -6;
+<a name="l00920"></a>00920         <span class="keywordflow">goto</span> close_pipes;
+<a name="l00921"></a>00921     }
+<a name="l00922"></a>00922 
+<a name="l00923"></a>00923     lms-&gt;<a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 1;
+<a name="l00924"></a>00924     lms-&gt;<a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a> = 0;
+<a name="l00925"></a>00925     r = _check(&amp;pinfo, strlen(path), path);
+<a name="l00926"></a>00926     lms-&gt;<a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 0;
+<a name="l00927"></a>00927     lms-&gt;<a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a> = 0;
+<a name="l00928"></a>00928 
+<a name="l00929"></a>00929   close_pipes:
+<a name="l00930"></a>00930     <a class="code" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lms_close_pipes</a>(&amp;pinfo);
+<a name="l00931"></a>00931   end:
+<a name="l00932"></a>00932     <span class="keywordflow">return</span> r;
+<a name="l00933"></a>00933 }
+<a name="l00934"></a>00934 
+<a name="l00948"></a>00948 <span class="keywordtype">int</span>
+<a name="l00949"></a><a class="code" href="lightmediascanner__check_8c.html#a56ce530328493e110054aa1eabf66c2">00949</a> <a class="code" href="lightmediascanner_8h.html#bfd6888e606654c585e41aa946637432">lms_check_single_process</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path)
+<a name="l00950"></a>00950 {
+<a name="l00951"></a>00951     <span class="keywordtype">char</span> path[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>];
+<a name="l00952"></a>00952     <span class="keyword">struct </span>sinfo sinfo;
+<a name="l00953"></a>00953     <span class="keywordtype">int</span> r;
+<a name="l00954"></a>00954 
+<a name="l00955"></a>00955     r = _lms_check_check_valid(lms, top_path);
+<a name="l00956"></a>00956     <span class="keywordflow">if</span> (r &lt; 0)
+<a name="l00957"></a>00957         <span class="keywordflow">return</span> r;
+<a name="l00958"></a>00958 
+<a name="l00959"></a>00959     sinfo.<a class="code" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a> = lms;
+<a name="l00960"></a>00960     sinfo.<a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a> = 0;
+<a name="l00961"></a>00961 
+<a name="l00962"></a>00962     <span class="keywordflow">if</span> (realpath(top_path, path) == NULL) {
+<a name="l00963"></a>00963         perror(<span class="stringliteral">"realpath"</span>);
+<a name="l00964"></a>00964         <span class="keywordflow">return</span> -6;
+<a name="l00965"></a>00965     }
+<a name="l00966"></a>00966 
+<a name="l00967"></a>00967     lms-&gt;<a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 1;
+<a name="l00968"></a>00968     lms-&gt;<a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a> = 0;
+<a name="l00969"></a>00969     r = _check_single_process(&amp;sinfo, strlen(path), path);
+<a name="l00970"></a>00970     lms-&gt;<a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 0;
+<a name="l00971"></a>00971     lms-&gt;<a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a> = 0;
+<a name="l00972"></a>00972 
+<a name="l00973"></a>00973     <span class="keywordflow">return</span> r;
+<a name="l00974"></a>00974 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__check_8c.html b/www/api/lightmediascanner__check_8c.html
new file mode 100644 (file)
index 0000000..3ca2cad
--- /dev/null
@@ -0,0 +1,194 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_check.c File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>src/lib/lightmediascanner_check.c File Reference</h1><code>#include &lt;sys/wait.h&gt;</code><br>
+<code>#include &lt;sys/stat.h&gt;</code><br>
+<code>#include &lt;unistd.h&gt;</code><br>
+<code>#include &lt;dirent.h&gt;</code><br>
+<code>#include &lt;signal.h&gt;</code><br>
+<code>#include &lt;time.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;string.h&gt;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&quot;</code><br>
+
+<p>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_check.c:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<a href="lightmediascanner__check_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__check_8c.html#369266c24eacffb87046522897a570d5">_GNU_SOURCE</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__check_8c.html#f8084f435d209d810eb33deaa35fab5e">COMM_FINFO_FLAG_OUTDATED</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__check_8c.html#859492d896e816498edb471315efced1">lms_check</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *top_path)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__check_8c.html#a56ce530328493e110054aa1eabf66c2">lms_check_single_process</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *top_path)</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="369266c24eacffb87046522897a570d5"></a><!-- doxytag: member="lightmediascanner_check.c::_GNU_SOURCE" ref="369266c24eacffb87046522897a570d5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _GNU_SOURCE          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copyright (C) 2007 by INdT<p>
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__check_8c-source.html#l00025">25</a> of file <a class="el" href="lightmediascanner__check_8c-source.html">lightmediascanner_check.c</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="f8084f435d209d810eb33deaa35fab5e"></a><!-- doxytag: member="lightmediascanner_check.c::COMM_FINFO_FLAG_OUTDATED" ref="f8084f435d209d810eb33deaa35fab5e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define COMM_FINFO_FLAG_OUTDATED&nbsp;&nbsp;&nbsp;1          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__check_8c-source.html#l00075">75</a> of file <a class="el" href="lightmediascanner__check_8c-source.html">lightmediascanner_check.c</a>.</p>
+
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="859492d896e816498edb471315efced1"></a><!-- doxytag: member="lightmediascanner_check.c::lms_check" ref="859492d896e816498edb471315efced1" args="(lms_t *lms, const char *top_path)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_check           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>top_path</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Check consistency of given directory.<p>
+This will update media in the given directory or its children. If files are missing, they'll be marked as deleted (dtime is set), if they were marked as deleted and are now present, they are unmarked (dtime is unset).<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>top_path</em>&nbsp;</td><td>top directory to scan.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__check_8c-source.html#l00900">900</a> of file <a class="el" href="lightmediascanner__check_8c-source.html">lightmediascanner_check.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00055">pinfo::common</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00088">lms::is_processing</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00050">cinfo::lms</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00596">lms_close_pipes()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00607">lms_create_pipes()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00042">PATH_SIZE</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00089">lms::stop_processing</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="a56ce530328493e110054aa1eabf66c2"></a><!-- doxytag: member="lightmediascanner_check.c::lms_check_single_process" ref="a56ce530328493e110054aa1eabf66c2" args="(lms_t *lms, const char *top_path)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_check_single_process           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>top_path</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Check consistency of given directory *without fork()-ing* into child process.<p>
+This will update media in the given directory or its children. If files are missing, they'll be marked as deleted (dtime is set), if they were marked as deleted and are now present, they are unmarked (dtime is unset). Note that if a <a class="el" href="structparser.html">parser</a> hangs in the check process, this call will also hang.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>top_path</em>&nbsp;</td><td>top directory to scan.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__check_8c-source.html#l00949">949</a> of file <a class="el" href="lightmediascanner__check_8c-source.html">lightmediascanner_check.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00067">sinfo::commit_counter</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00064">sinfo::common</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00088">lms::is_processing</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00050">cinfo::lms</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00042">PATH_SIZE</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00089">lms::stop_processing</a>.</p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.dot b/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.dot
new file mode 100644 (file)
index 0000000..3a0dc64
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_check",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_close_pipes",height=0.2,width=0.4,color="black",URL="$lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_create_pipes",height=0.2,width=0.4,color="black",URL="$lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4"];
+}
diff --git a/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.md5 b/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.md5
new file mode 100644 (file)
index 0000000..d1a430a
--- /dev/null
@@ -0,0 +1 @@
+e5d6266cac6f4e806beb307fbceec1fc
\ No newline at end of file
diff --git a/www/api/lightmediascanner__check_8c__incl.dot b/www/api/lightmediascanner__check_8c__incl.dot
new file mode 100644 (file)
index 0000000..199c637
--- /dev/null
@@ -0,0 +1,51 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_check.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="sys/wait.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sys/stat.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="unistd.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="dirent.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="signal.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="time.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="stdio.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="stdlib.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="string.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="lightmediascanner.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8h.html"];
+  Node1 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="lightmediascanner_private.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__private_8h.html"];
+  Node12 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="lightmediascanner_plugin.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__plugin_8h.html"];
+  Node13 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="lightmediascanner_charset_conv.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__charset__conv_8h.html"];
+  Node13 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="sqlite3.h",height=0.2,width=0.4,color="grey75"];
+  Node13 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node12 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="poll.h",height=0.2,width=0.4,color="grey75"];
+  Node12 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="limits.h",height=0.2,width=0.4,color="grey75"];
+  Node12 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="lightmediascanner_db_private.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__private_8h.html"];
+  Node19 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}
diff --git a/www/api/lightmediascanner__check_8c__incl.md5 b/www/api/lightmediascanner__check_8c__incl.md5
new file mode 100644 (file)
index 0000000..4730582
--- /dev/null
@@ -0,0 +1 @@
+8b0dfa63d4ad79d27139cf1f8d53814c
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db_8h-source.html b/www/api/lightmediascanner__db_8h-source.html
new file mode 100644 (file)
index 0000000..347cc5e
--- /dev/null
@@ -0,0 +1,135 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_db.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>src/lib/lightmediascanner_db.h</h1><a href="lightmediascanner__db_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef _LIGHTMEDIASCANNER_DB_H_</span>
+<a name="l00022"></a><a class="code" href="lightmediascanner__db_8h.html#5360af19a6df2e8b0d326344bb27e151">00022</a> <span class="preprocessor"></span><span class="preprocessor">#define _LIGHTMEDIASCANNER_DB_H_ 1</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#ifdef API</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#undef API</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span>
+<a name="l00028"></a>00028 <span class="preprocessor">#ifdef __GNUC__</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt;= 4</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#  define API __attribute__ ((visibility("default")))</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#  define API</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt; 3 || (__GNUC__ == 3 &amp;&amp; __GNUC_MINOR__ &gt;= 4)</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))</span>
+<a name="l00036"></a>00036 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00040"></a><a class="code" href="lightmediascanner__db_8h.html#d8ce4efaa307683d3d763b37b4711c53">00040</a> <span class="preprocessor"></span><span class="preprocessor">#  define API</span>
+<a name="l00041"></a><a class="code" href="lightmediascanner__db_8h.html#6fe68cac0abf3e2ca61141920414e93a">00041</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00043"></a>00043 <span class="preprocessor"></span>
+<a name="l00044"></a>00044 <span class="preprocessor">#include &lt;<a class="code" href="lightmediascanner__plugin_8h.html">lightmediascanner_plugin.h</a>&gt;</span>
+<a name="l00045"></a>00045 <span class="preprocessor">#include &lt;<a class="code" href="lightmediascanner__utils_8h.html">lightmediascanner_utils.h</a>&gt;</span>
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00048"></a>00048 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+<a name="l00049"></a>00049 <span class="preprocessor">#endif</span>
+<a name="l00050"></a>00050 <span class="preprocessor"></span>
+<a name="l00060"></a>00060     <span class="comment">/* Image Records */</span>
+<a name="l00061"></a><a class="code" href="structlms__gps__info.html">00061</a>     <span class="keyword">struct </span><a class="code" href="structlms__gps__info.html">lms_gps_info</a> {
+<a name="l00062"></a><a class="code" href="structlms__gps__info.html#70f152098accf3d46f18bc159e3b4359">00062</a>         <span class="keywordtype">double</span> <a class="code" href="structlms__gps__info.html#70f152098accf3d46f18bc159e3b4359">latitude</a>;
+<a name="l00063"></a><a class="code" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">00063</a>         <span class="keywordtype">double</span> <a class="code" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">longitude</a>;
+<a name="l00064"></a><a class="code" href="structlms__gps__info.html#9b56b5dbae3e5c5722f7331c2bcbd520">00064</a>         <span class="keywordtype">double</span> <a class="code" href="structlms__gps__info.html#9b56b5dbae3e5c5722f7331c2bcbd520">altitude</a>;
+<a name="l00065"></a>00065     };
+<a name="l00066"></a>00066 
+<a name="l00067"></a><a class="code" href="structlms__image__info.html">00067</a>     <span class="keyword">struct </span><a class="code" href="structlms__image__info.html">lms_image_info</a> {
+<a name="l00068"></a><a class="code" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">00068</a>         int64_t <a class="code" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">id</a>;
+<a name="l00069"></a><a class="code" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">00069</a>         <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> <a class="code" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">title</a>;
+<a name="l00070"></a><a class="code" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">00070</a>         <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> <a class="code" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">artist</a>;
+<a name="l00071"></a><a class="code" href="structlms__image__info.html#150973d3ac9f60f1b74f0a0d08c7f288">00071</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlms__image__info.html#150973d3ac9f60f1b74f0a0d08c7f288">date</a>;
+<a name="l00072"></a><a class="code" href="structlms__image__info.html#fbd2df9f6f5f290ac02ce4d803677249">00072</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="structlms__image__info.html#fbd2df9f6f5f290ac02ce4d803677249">width</a>;
+<a name="l00073"></a><a class="code" href="structlms__image__info.html#f2ae81781dadf7ecaa307b3bc91e710e">00073</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="structlms__image__info.html#f2ae81781dadf7ecaa307b3bc91e710e">height</a>;
+<a name="l00074"></a><a class="code" href="structlms__image__info.html#434330468b69d0f14b344c672d4778af">00074</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="structlms__image__info.html#434330468b69d0f14b344c672d4778af">orientation</a>;
+<a name="l00075"></a><a class="code" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">00075</a>         <span class="keyword">struct </span><a class="code" href="structlms__gps__info.html">lms_gps_info</a> <a class="code" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">gps</a>;
+<a name="l00076"></a>00076     };
+<a name="l00077"></a>00077 
+<a name="l00078"></a><a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">00078</a>     <span class="keyword">typedef</span> <span class="keyword">struct </span>lms_db_image <a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a>;
+<a name="l00079"></a>00079 
+<a name="l00080"></a>00080     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *<a class="code" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new</a>(sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00081"></a>00081     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lms_db_image_start</a>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00082"></a>00082     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lms_db_image_free</a>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00083"></a>00083     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#gbf78dd3b90caa31e8901369211501200">lms_db_image_add</a>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi, <span class="keyword">struct</span> <a class="code" href="structlms__image__info.html">lms_image_info</a> *info) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00084"></a>00084 
+<a name="l00085"></a>00085     <span class="comment">/* Audio Records */</span>
+<a name="l00086"></a><a class="code" href="structlms__audio__info.html">00086</a>     <span class="keyword">struct </span><a class="code" href="structlms__audio__info.html">lms_audio_info</a> {
+<a name="l00087"></a><a class="code" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">00087</a>         int64_t <a class="code" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">id</a>;
+<a name="l00088"></a><a class="code" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">00088</a>         <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> <a class="code" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">title</a>;
+<a name="l00089"></a><a class="code" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">00089</a>         <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> <a class="code" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">artist</a>;
+<a name="l00090"></a><a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">00090</a>         <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> <a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>;
+<a name="l00091"></a><a class="code" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">00091</a>         <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> <a class="code" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">genre</a>;
+<a name="l00092"></a><a class="code" href="structlms__audio__info.html#7197e471d313274c4e361b2ff9e60e8a">00092</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlms__audio__info.html#7197e471d313274c4e361b2ff9e60e8a">playcnt</a>;
+<a name="l00093"></a><a class="code" href="structlms__audio__info.html#d372f08ada955f75be8f218d90093242">00093</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structlms__audio__info.html#d372f08ada955f75be8f218d90093242">trackno</a>;
+<a name="l00094"></a><a class="code" href="structlms__audio__info.html#932e73ccd8ff946831930be65d1ba2d2">00094</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structlms__audio__info.html#932e73ccd8ff946831930be65d1ba2d2">rating</a>;
+<a name="l00095"></a>00095     };
+<a name="l00096"></a>00096 
+<a name="l00097"></a><a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">00097</a>     <span class="keyword">typedef</span> <span class="keyword">struct </span>lms_db_audio <a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a>;
+<a name="l00098"></a>00098 
+<a name="l00099"></a>00099     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *<a class="code" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new</a>(sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00100"></a>00100     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lms_db_audio_start</a>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00101"></a>00101     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lms_db_audio_free</a>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00102"></a>00102     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g9b83f734ec4905778dec5494f39b7397">lms_db_audio_add</a>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00103"></a>00103 
+<a name="l00104"></a>00104     <span class="comment">/* Video Records */</span>
+<a name="l00105"></a><a class="code" href="structlms__video__info.html">00105</a>     <span class="keyword">struct </span><a class="code" href="structlms__video__info.html">lms_video_info</a> {
+<a name="l00106"></a><a class="code" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">00106</a>         int64_t <a class="code" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">id</a>;
+<a name="l00107"></a><a class="code" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">00107</a>         <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> <a class="code" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">title</a>;
+<a name="l00108"></a><a class="code" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">00108</a>         <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> <a class="code" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">artist</a>;
+<a name="l00109"></a>00109     };
+<a name="l00110"></a>00110 
+<a name="l00111"></a><a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">00111</a>     <span class="keyword">typedef</span> <span class="keyword">struct </span>lms_db_video <a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a>;
+<a name="l00112"></a>00112 
+<a name="l00113"></a>00113     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *<a class="code" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new</a>(sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00114"></a>00114     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lms_db_video_start</a>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00115"></a>00115     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lms_db_video_free</a>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00116"></a>00116     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#gb07d1e7fe962486b6e9d00581e8aac19">lms_db_video_add</a>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv, <span class="keyword">struct</span> <a class="code" href="structlms__video__info.html">lms_video_info</a> *info) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00117"></a>00117 
+<a name="l00118"></a>00118     <span class="comment">/* Playlist Records */</span>
+<a name="l00119"></a><a class="code" href="structlms__playlist__info.html">00119</a>     <span class="keyword">struct </span><a class="code" href="structlms__playlist__info.html">lms_playlist_info</a> {
+<a name="l00120"></a><a class="code" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">00120</a>         int64_t <a class="code" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">id</a>;
+<a name="l00121"></a><a class="code" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">00121</a>         <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> <a class="code" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">title</a>;
+<a name="l00122"></a><a class="code" href="structlms__playlist__info.html#81cc52f5b6ce04cd64cf3884cb774663">00122</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlms__playlist__info.html#81cc52f5b6ce04cd64cf3884cb774663">n_entries</a>;
+<a name="l00123"></a>00123     };
+<a name="l00124"></a>00124 
+<a name="l00125"></a><a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">00125</a>     <span class="keyword">typedef</span> <span class="keyword">struct </span>lms_db_playlist <a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a>;
+<a name="l00126"></a>00126 
+<a name="l00127"></a>00127     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *<a class="code" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new</a>(sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00128"></a>00128     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lms_db_playlist_start</a>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00129"></a>00129     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lms_db_playlist_free</a>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00130"></a>00130     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g8864e532609191f07737c1d23c1bc65f">lms_db_playlist_add</a>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp, <span class="keyword">struct</span> <a class="code" href="structlms__playlist__info.html">lms_playlist_info</a> *info) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00131"></a>00131 
+<a name="l00136"></a>00136 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00137"></a>00137 <span class="preprocessor"></span>}
+<a name="l00138"></a>00138 <span class="preprocessor">#endif</span>
+<a name="l00139"></a>00139 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_DB_H_ */</span>
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db_8h.html b/www/api/lightmediascanner__db_8h.html
new file mode 100644 (file)
index 0000000..37681cd
--- /dev/null
@@ -0,0 +1,171 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_db.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>src/lib/lightmediascanner_db.h File Reference</h1><code>#include &lt;<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>&gt;</code><br>
+
+<p>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_db.h:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<a href="lightmediascanner__db_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__gps__info.html">lms_gps_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html">lms_image_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html">lms_audio_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__video__info.html">lms_video_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__playlist__info.html">lms_playlist_info</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db_8h.html#5360af19a6df2e8b0d326344bb27e151">_LIGHTMEDIASCANNER_DB_H_</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(...)</td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_db_image&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_db_audio&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_db_video&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_db_playlist&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lms_db_image_start</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lms_db_image_free</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gbf78dd3b90caa31e8901369211501200">lms_db_image_add</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi, struct <a class="el" href="structlms__image__info.html">lms_image_info</a> *info) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lms_db_audio_start</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lms_db_audio_free</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g9b83f734ec4905778dec5494f39b7397">lms_db_audio_add</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, struct <a class="el" href="structlms__audio__info.html">lms_audio_info</a> *info) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lms_db_video_start</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lms_db_video_free</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gb07d1e7fe962486b6e9d00581e8aac19">lms_db_video_add</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv, struct <a class="el" href="structlms__video__info.html">lms_video_info</a> *info) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lms_db_playlist_start</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lms_db_playlist_free</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g8864e532609191f07737c1d23c1bc65f">lms_db_playlist_add</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp, struct <a class="el" href="structlms__playlist__info.html">lms_playlist_info</a> *info) GNUC_NON_NULL(1</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="5360af19a6df2e8b0d326344bb27e151"></a><!-- doxytag: member="lightmediascanner_db.h::_LIGHTMEDIASCANNER_DB_H_" ref="5360af19a6df2e8b0d326344bb27e151" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _LIGHTMEDIASCANNER_DB_H_&nbsp;&nbsp;&nbsp;1          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copyright (C) 2007 by INdT<p>
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00022">22</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="d8ce4efaa307683d3d763b37b4711c53"></a><!-- doxytag: member="lightmediascanner_db.h::API" ref="d8ce4efaa307683d3d763b37b4711c53" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define API          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00040">40</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner_db.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_NON_NULL          </td>
+          <td>(</td>
+          <td class="paramtype"> <em>...</em>&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00041">41</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db_8h__dep__incl.dot b/www/api/lightmediascanner__db_8h__dep__incl.dot
new file mode 100644 (file)
index 0000000..208a72a
--- /dev/null
@@ -0,0 +1,15 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_db.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="src/lib/lightmediascanner_db_audio.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__audio_8c.html"];
+  Node1 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="src/lib/lightmediascanner_db_image.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__image_8c.html"];
+  Node1 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="src/lib/lightmediascanner_db_playlist.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__playlist_8c.html"];
+  Node1 -> Node5 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="src/lib/lightmediascanner_db_video.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__video_8c.html"];
+}
diff --git a/www/api/lightmediascanner__db_8h__dep__incl.md5 b/www/api/lightmediascanner__db_8h__dep__incl.md5
new file mode 100644 (file)
index 0000000..7e290b3
--- /dev/null
@@ -0,0 +1 @@
+edb1284dadd24ad1ebf770b69c32f41b
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db_8h__incl.dot b/www/api/lightmediascanner__db_8h__incl.dot
new file mode 100644 (file)
index 0000000..998291b
--- /dev/null
@@ -0,0 +1,19 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_db.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lightmediascanner_plugin.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__plugin_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lightmediascanner.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8h.html"];
+  Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lightmediascanner_charset_conv.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__charset__conv_8h.html"];
+  Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="sqlite3.h",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="lightmediascanner_utils.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__utils_8h.html"];
+}
diff --git a/www/api/lightmediascanner__db_8h__incl.md5 b/www/api/lightmediascanner__db_8h__incl.md5
new file mode 100644 (file)
index 0000000..bf2a02a
--- /dev/null
@@ -0,0 +1 @@
+168ff3253177e1eea055d0b7bdf588cf
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__audio_8c-source.html b/www/api/lightmediascanner__db__audio_8c-source.html
new file mode 100644 (file)
index 0000000..14d0663
--- /dev/null
@@ -0,0 +1,683 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_db_audio.c Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>src/lib/lightmediascanner_db_audio.c</h1><a href="lightmediascanner__db__audio_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 <span class="keyword">struct </span>lms_db_audio {
+<a name="l00027"></a>00027     sqlite3 *db;
+<a name="l00028"></a>00028     sqlite3_stmt *insert_audio;
+<a name="l00029"></a>00029     sqlite3_stmt *insert_artist;
+<a name="l00030"></a>00030     sqlite3_stmt *insert_album;
+<a name="l00031"></a>00031     sqlite3_stmt *insert_genre;
+<a name="l00032"></a>00032     sqlite3_stmt *get_artist;
+<a name="l00033"></a>00033     sqlite3_stmt *get_album;
+<a name="l00034"></a>00034     sqlite3_stmt *get_genre;
+<a name="l00035"></a>00035     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _references;
+<a name="l00036"></a>00036     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _is_started:1;
+<a name="l00037"></a>00037 };
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039 <span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structlms__db__cache.html">lms_db_cache</a> _cache = {0, NULL};
+<a name="l00040"></a>00040 
+<a name="l00041"></a>00041 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00042"></a>00042 _db_create(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> <span class="keywordtype">char</span> *sql)
+<a name="l00043"></a>00043 {
+<a name="l00044"></a>00044     <span class="keywordtype">char</span> *err;
+<a name="l00045"></a>00045     <span class="keywordtype">int</span> r;
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047     r = sqlite3_exec(db, sql, NULL, NULL, &amp;err);
+<a name="l00048"></a>00048     <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00049"></a>00049         fprintf(stderr, <span class="stringliteral">"ERROR: could not create \"%s\": %s\n"</span>, name, err);
+<a name="l00050"></a>00050         sqlite3_free(err);
+<a name="l00051"></a>00051         <span class="keywordflow">return</span> -1;
+<a name="l00052"></a>00052     }
+<a name="l00053"></a>00053 
+<a name="l00054"></a>00054     <span class="keywordflow">return</span> 0;
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056 
+<a name="l00057"></a>00057 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00058"></a>00058 _db_table_updater_audios_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run)
+<a name="l00059"></a>00059 {
+<a name="l00060"></a>00060     <span class="keywordflow">return</span> 0;
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062 
+<a name="l00063"></a>00063 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00064"></a>00064 _db_table_updater_audios_1(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run)
+<a name="l00065"></a>00065 {
+<a name="l00066"></a>00066     <span class="keywordtype">char</span> *err;
+<a name="l00067"></a>00067     <span class="keywordtype">int</span> ret;
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069     ret = sqlite3_exec(db, <span class="stringliteral">"DELETE FROM files"</span>, NULL, NULL, &amp;err);
+<a name="l00070"></a>00070     <span class="keywordflow">if</span> (ret != SQLITE_OK) {
+<a name="l00071"></a>00071         fprintf(stderr, <span class="stringliteral">"ERROR: could not delete \"files\": %s\n"</span>, err);
+<a name="l00072"></a>00072         sqlite3_free(err);
+<a name="l00073"></a>00073         <span class="keywordflow">goto</span> done;
+<a name="l00074"></a>00074     }
+<a name="l00075"></a>00075 
+<a name="l00076"></a>00076     ret = sqlite3_exec(db, <span class="stringliteral">"DROP TABLE IF EXISTS audios"</span>, NULL, NULL, &amp;err);
+<a name="l00077"></a>00077     <span class="keywordflow">if</span> (ret != SQLITE_OK) {
+<a name="l00078"></a>00078         fprintf(stderr, <span class="stringliteral">"ERROR: could not drop \"audios\": %s\n"</span>, err);
+<a name="l00079"></a>00079         sqlite3_free(err);
+<a name="l00080"></a>00080         <span class="keywordflow">goto</span> done;
+<a name="l00081"></a>00081     }
+<a name="l00082"></a>00082 
+<a name="l00083"></a>00083     ret = _db_create(db, <span class="stringliteral">"audios"</span>,
+<a name="l00084"></a>00084         <span class="stringliteral">"CREATE TABLE IF NOT EXISTS audios ("</span>
+<a name="l00085"></a>00085         <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
+<a name="l00086"></a>00086         <span class="stringliteral">"title TEXT, "</span>
+<a name="l00087"></a>00087         <span class="stringliteral">"album_id INTEGER, "</span>
+<a name="l00088"></a>00088         <span class="stringliteral">"artist_id INTEGER, "</span>
+<a name="l00089"></a>00089         <span class="stringliteral">"genre_id INTEGER, "</span>
+<a name="l00090"></a>00090         <span class="stringliteral">"trackno INTEGER, "</span>
+<a name="l00091"></a>00091         <span class="stringliteral">"rating INTEGER, "</span>
+<a name="l00092"></a>00092         <span class="stringliteral">"playcnt INTEGER"</span>
+<a name="l00093"></a>00093         <span class="stringliteral">")"</span>);
+<a name="l00094"></a>00094     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00095"></a>00095         <span class="keywordflow">goto</span> done;
+<a name="l00096"></a>00096 
+<a name="l00097"></a>00097     ret = _db_create(db, <span class="stringliteral">"audios_title_idx"</span>,
+<a name="l00098"></a>00098         <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00099"></a>00099         <span class="stringliteral">"audios_title_idx ON audios (title)"</span>);
+<a name="l00100"></a>00100     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00101"></a>00101         <span class="keywordflow">goto</span> done;
+<a name="l00102"></a>00102 
+<a name="l00103"></a>00103     ret = _db_create(db, <span class="stringliteral">"audios_album_idx"</span>,
+<a name="l00104"></a>00104         <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00105"></a>00105         <span class="stringliteral">"audios_album_idx ON audios (album_id)"</span>);
+<a name="l00106"></a>00106     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00107"></a>00107         <span class="keywordflow">goto</span> done;
+<a name="l00108"></a>00108 
+<a name="l00109"></a>00109     ret = _db_create(db, <span class="stringliteral">"audios_artist_idx"</span>,
+<a name="l00110"></a>00110         <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00111"></a>00111         <span class="stringliteral">"audios_artist_idx ON audios (artist_id)"</span>);
+<a name="l00112"></a>00112     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00113"></a>00113         <span class="keywordflow">goto</span> done;
+<a name="l00114"></a>00114 
+<a name="l00115"></a>00115     ret = _db_create(db, <span class="stringliteral">"audios_genre_idx"</span>,
+<a name="l00116"></a>00116         <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00117"></a>00117         <span class="stringliteral">"audios_genre_idx ON audios (genre_id)"</span>);
+<a name="l00118"></a>00118     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00119"></a>00119         <span class="keywordflow">goto</span> done;
+<a name="l00120"></a>00120 
+<a name="l00121"></a>00121     ret = _db_create(db, <span class="stringliteral">"audios_trackno_idx"</span>,
+<a name="l00122"></a>00122         <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00123"></a>00123         <span class="stringliteral">"audios_trackno_idx ON audios (trackno)"</span>);
+<a name="l00124"></a>00124     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00125"></a>00125         <span class="keywordflow">goto</span> done;
+<a name="l00126"></a>00126 
+<a name="l00127"></a>00127     ret = _db_create(db, <span class="stringliteral">"audios_playcnt_idx"</span>,
+<a name="l00128"></a>00128         <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00129"></a>00129         <span class="stringliteral">"audios_playcnt_idx ON audios (playcnt)"</span>);
+<a name="l00130"></a>00130     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00131"></a>00131         <span class="keywordflow">goto</span> done;
+<a name="l00132"></a>00132 
+<a name="l00133"></a>00133     ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00134"></a>00134         <span class="stringliteral">"delete_audios_on_files_deleted "</span>
+<a name="l00135"></a>00135         <span class="stringliteral">"DELETE ON files FOR EACH ROW BEGIN"</span>
+<a name="l00136"></a>00136         <span class="stringliteral">"   DELETE FROM audios WHERE id = OLD.id; END;"</span>);
+<a name="l00137"></a>00137     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00138"></a>00138         <span class="keywordflow">goto</span> done;
+<a name="l00139"></a>00139 
+<a name="l00140"></a>00140     ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00141"></a>00141         <span class="stringliteral">"delete_files_on_audios_deleted "</span>
+<a name="l00142"></a>00142         <span class="stringliteral">"DELETE ON audios FOR EACH ROW BEGIN"</span>
+<a name="l00143"></a>00143         <span class="stringliteral">" DELETE FROM files WHERE id = OLD.id; END;"</span>);
+<a name="l00144"></a>00144 
+<a name="l00145"></a>00145   done:
+<a name="l00146"></a>00146     <span class="keywordflow">return</span> ret;
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148 
+<a name="l00149"></a>00149 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> _db_table_updater_audios[] = {
+<a name="l00150"></a>00150     _db_table_updater_audios_0,
+<a name="l00151"></a>00151     _db_table_updater_audios_1
+<a name="l00152"></a>00152 };
+<a name="l00153"></a>00153 
+<a name="l00154"></a>00154 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00155"></a>00155 _db_table_updater_audio_artists_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
+<a name="l00156"></a>00156     <span class="keywordtype">int</span> ret;
+<a name="l00157"></a>00157 
+<a name="l00158"></a>00158     ret = _db_create(db, <span class="stringliteral">"audio_artists"</span>,
+<a name="l00159"></a>00159         <span class="stringliteral">"CREATE TABLE IF NOT EXISTS audio_artists ("</span>
+<a name="l00160"></a>00160         <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
+<a name="l00161"></a>00161         <span class="stringliteral">"name TEXT UNIQUE"</span>
+<a name="l00162"></a>00162         <span class="stringliteral">")"</span>);
+<a name="l00163"></a>00163     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00164"></a>00164         <span class="keywordflow">goto</span> done;
+<a name="l00165"></a>00165 
+<a name="l00166"></a>00166     ret = _db_create(db, <span class="stringliteral">"audio_artists_name_idx"</span>,
+<a name="l00167"></a>00167         <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00168"></a>00168         <span class="stringliteral">"audio_artists_name_idx ON audio_artists (name)"</span>);
+<a name="l00169"></a>00169 
+<a name="l00170"></a>00170   done:
+<a name="l00171"></a>00171     <span class="keywordflow">return</span> ret;
+<a name="l00172"></a>00172 }
+<a name="l00173"></a>00173 
+<a name="l00174"></a>00174 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> _db_table_updater_audio_artists[] = {
+<a name="l00175"></a>00175     _db_table_updater_audio_artists_0
+<a name="l00176"></a>00176 };
+<a name="l00177"></a>00177 
+<a name="l00178"></a>00178 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00179"></a>00179 _db_table_updater_audio_albums_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
+<a name="l00180"></a>00180     <span class="keywordtype">int</span> ret;
+<a name="l00181"></a>00181 
+<a name="l00182"></a>00182     ret = _db_create(db, <span class="stringliteral">"audio_albums"</span>,
+<a name="l00183"></a>00183         <span class="stringliteral">"CREATE TABLE IF NOT EXISTS audio_albums ("</span>
+<a name="l00184"></a>00184         <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
+<a name="l00185"></a>00185         <span class="stringliteral">"artist_id INTEGER, "</span>
+<a name="l00186"></a>00186         <span class="stringliteral">"name TEXT"</span>
+<a name="l00187"></a>00187         <span class="stringliteral">")"</span>);
+<a name="l00188"></a>00188     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00189"></a>00189         <span class="keywordflow">goto</span> done;
+<a name="l00190"></a>00190 
+<a name="l00191"></a>00191     ret = _db_create(db, <span class="stringliteral">"audio_albums_name_idx"</span>,
+<a name="l00192"></a>00192         <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00193"></a>00193         <span class="stringliteral">"audio_albums_name_idx ON audio_albums (name)"</span>);
+<a name="l00194"></a>00194     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00195"></a>00195         <span class="keywordflow">goto</span> done;
+<a name="l00196"></a>00196 
+<a name="l00197"></a>00197     ret = _db_create(db, <span class="stringliteral">"audio_albums_artist_idx"</span>,
+<a name="l00198"></a>00198         <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00199"></a>00199         <span class="stringliteral">"audio_albums_artist_idx ON audio_albums (artist_id)"</span>);
+<a name="l00200"></a>00200     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00201"></a>00201         <span class="keywordflow">goto</span> done;
+<a name="l00202"></a>00202 
+<a name="l00203"></a>00203     ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00204"></a>00204         <span class="stringliteral">"delete_audios_on_albums_deleted "</span>
+<a name="l00205"></a>00205         <span class="stringliteral">"DELETE ON audio_albums FOR EACH ROW BEGIN"</span>
+<a name="l00206"></a>00206         <span class="stringliteral">" DELETE FROM audios WHERE album_id = OLD.id; END;"</span>);
+<a name="l00207"></a>00207     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00208"></a>00208         <span class="keywordflow">goto</span> done;
+<a name="l00209"></a>00209 
+<a name="l00210"></a>00210     ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00211"></a>00211         <span class="stringliteral">"delete_audio_albums_on_artists_deleted "</span>
+<a name="l00212"></a>00212         <span class="stringliteral">"DELETE ON audio_artists FOR EACH ROW BEGIN"</span>
+<a name="l00213"></a>00213         <span class="stringliteral">" DELETE FROM audio_albums WHERE artist_id = OLD.id; END;"</span>);
+<a name="l00214"></a>00214 
+<a name="l00215"></a>00215   done:
+<a name="l00216"></a>00216     <span class="keywordflow">return</span> ret;
+<a name="l00217"></a>00217 }
+<a name="l00218"></a>00218 
+<a name="l00219"></a>00219 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> _db_table_updater_audio_albums[] = {
+<a name="l00220"></a>00220     _db_table_updater_audio_albums_0
+<a name="l00221"></a>00221 };
+<a name="l00222"></a>00222 
+<a name="l00223"></a>00223 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00224"></a>00224 _db_table_updater_audio_genres_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
+<a name="l00225"></a>00225     <span class="keywordtype">int</span> ret;
+<a name="l00226"></a>00226 
+<a name="l00227"></a>00227     ret = _db_create(db, <span class="stringliteral">"audio_genres"</span>,
+<a name="l00228"></a>00228         <span class="stringliteral">"CREATE TABLE IF NOT EXISTS audio_genres ("</span>
+<a name="l00229"></a>00229         <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
+<a name="l00230"></a>00230         <span class="stringliteral">"name TEXT UNIQUE"</span>
+<a name="l00231"></a>00231         <span class="stringliteral">")"</span>);
+<a name="l00232"></a>00232     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00233"></a>00233         <span class="keywordflow">goto</span> done;
+<a name="l00234"></a>00234 
+<a name="l00235"></a>00235     ret = _db_create(db, <span class="stringliteral">"audio_genres_name_idx"</span>,
+<a name="l00236"></a>00236         <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00237"></a>00237         <span class="stringliteral">"audio_albums_name_idx ON audio_albums (name)"</span>);
+<a name="l00238"></a>00238     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00239"></a>00239         <span class="keywordflow">goto</span> done;
+<a name="l00240"></a>00240 
+<a name="l00241"></a>00241     ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00242"></a>00242         <span class="stringliteral">"delete_audios_on_genres_deleted "</span>
+<a name="l00243"></a>00243         <span class="stringliteral">"DELETE ON audio_genres FOR EACH ROW BEGIN"</span>
+<a name="l00244"></a>00244         <span class="stringliteral">" DELETE FROM audios WHERE genre_id = OLD.id; END;"</span>);
+<a name="l00245"></a>00245 
+<a name="l00246"></a>00246   done:
+<a name="l00247"></a>00247     <span class="keywordflow">return</span> ret;
+<a name="l00248"></a>00248 }
+<a name="l00249"></a>00249 
+<a name="l00250"></a>00250 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> _db_table_updater_audio_genres[] = {
+<a name="l00251"></a>00251     _db_table_updater_audio_genres_0
+<a name="l00252"></a>00252 };
+<a name="l00253"></a>00253 
+<a name="l00254"></a><a class="code" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">00254</a> <span class="preprocessor">#define _DB_T_UPDATE(db, name, array)                                   \</span>
+<a name="l00255"></a>00255 <span class="preprocessor">    lms_db_table_update_if_required(db, name, LMS_ARRAY_SIZE(array), array)</span>
+<a name="l00256"></a>00256 <span class="preprocessor"></span>
+<a name="l00257"></a>00257 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00258"></a>00258 _db_create_tables_if_required(sqlite3 *db)
+<a name="l00259"></a>00259 {
+<a name="l00260"></a>00260     <span class="keywordtype">int</span> ret;
+<a name="l00261"></a>00261 
+<a name="l00262"></a>00262     ret = <a class="code" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">_DB_T_UPDATE</a>(db, <span class="stringliteral">"audios"</span>, _db_table_updater_audios);
+<a name="l00263"></a>00263     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00264"></a>00264         <span class="keywordflow">goto</span> done;
+<a name="l00265"></a>00265 
+<a name="l00266"></a>00266     ret = <a class="code" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">_DB_T_UPDATE</a>(db, <span class="stringliteral">"audio_artists"</span>, _db_table_updater_audio_artists);
+<a name="l00267"></a>00267     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00268"></a>00268         <span class="keywordflow">goto</span> done;
+<a name="l00269"></a>00269 
+<a name="l00270"></a>00270     ret = <a class="code" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">_DB_T_UPDATE</a>(db, <span class="stringliteral">"audio_albums"</span>, _db_table_updater_audio_albums);
+<a name="l00271"></a>00271     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00272"></a>00272         <span class="keywordflow">goto</span> done;
+<a name="l00273"></a>00273 
+<a name="l00274"></a>00274     ret = <a class="code" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">_DB_T_UPDATE</a>(db, <span class="stringliteral">"audio_genres"</span>, _db_table_updater_audio_genres);
+<a name="l00275"></a>00275 
+<a name="l00276"></a>00276   done:
+<a name="l00277"></a>00277     <span class="keywordflow">return</span> ret;
+<a name="l00278"></a>00278 }
+<a name="l00279"></a>00279 
+<a name="l00280"></a>00280 <span class="preprocessor">#undef _DB_T_UPDATE</span>
+<a name="l00281"></a>00281 <span class="preprocessor"></span>
+<a name="l00296"></a>00296 <a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *
+<a name="l00297"></a><a class="code" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">00297</a> <a class="code" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new</a>(sqlite3 *db)
+<a name="l00298"></a>00298 {
+<a name="l00299"></a>00299     <a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda;
+<a name="l00300"></a>00300     <span class="keywordtype">void</span> *p;
+<a name="l00301"></a>00301 
+<a name="l00302"></a>00302     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a>(&amp;_cache, db, &amp;p) == 0) {
+<a name="l00303"></a>00303         lda = p;
+<a name="l00304"></a>00304         lda-&gt;_references++;
+<a name="l00305"></a>00305         <span class="keywordflow">return</span> lda;
+<a name="l00306"></a>00306     }
+<a name="l00307"></a>00307 
+<a name="l00308"></a>00308     <span class="keywordflow">if</span> (!db)
+<a name="l00309"></a>00309         <span class="keywordflow">return</span> NULL;
+<a name="l00310"></a>00310 
+<a name="l00311"></a>00311     <span class="keywordflow">if</span> (_db_create_tables_if_required(db) != 0) {
+<a name="l00312"></a>00312         fprintf(stderr, <span class="stringliteral">"ERROR: could not create tables.\n"</span>);
+<a name="l00313"></a>00313         <span class="keywordflow">return</span> NULL;
+<a name="l00314"></a>00314     }
+<a name="l00315"></a>00315 
+<a name="l00316"></a>00316     lda = calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a>));
+<a name="l00317"></a>00317     lda-&gt;_references = 1;
+<a name="l00318"></a>00318     lda-&gt;db = db;
+<a name="l00319"></a>00319 
+<a name="l00320"></a>00320     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a>(&amp;_cache, db, lda) != 0) {
+<a name="l00321"></a>00321         <a class="code" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lms_db_audio_free</a>(lda);
+<a name="l00322"></a>00322         <span class="keywordflow">return</span> NULL;
+<a name="l00323"></a>00323     }
+<a name="l00324"></a>00324 
+<a name="l00325"></a>00325     <span class="keywordflow">return</span> lda;
+<a name="l00326"></a>00326 }
+<a name="l00327"></a>00327 
+<a name="l00340"></a>00340 <span class="keywordtype">int</span>
+<a name="l00341"></a><a class="code" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">00341</a> <a class="code" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lms_db_audio_start</a>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda)
+<a name="l00342"></a>00342 {
+<a name="l00343"></a>00343     <span class="keywordflow">if</span> (!lda)
+<a name="l00344"></a>00344         <span class="keywordflow">return</span> -1;
+<a name="l00345"></a>00345     <span class="keywordflow">if</span> (lda-&gt;_is_started)
+<a name="l00346"></a>00346         <span class="keywordflow">return</span> 0;
+<a name="l00347"></a>00347 
+<a name="l00348"></a>00348     lda-&gt;insert_audio = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda-&gt;db,
+<a name="l00349"></a>00349         <span class="stringliteral">"INSERT OR REPLACE INTO audios "</span>
+<a name="l00350"></a>00350         <span class="stringliteral">"(id, title, album_id, artist_id, genre_id, trackno, rating, playcnt) "</span>
+<a name="l00351"></a>00351         <span class="stringliteral">"VALUES (?, ?, ?, ?, ?, ?, ?, ?)"</span>);
+<a name="l00352"></a>00352     <span class="keywordflow">if</span> (!lda-&gt;insert_audio)
+<a name="l00353"></a>00353         <span class="keywordflow">return</span> -2;
+<a name="l00354"></a>00354 
+<a name="l00355"></a>00355     lda-&gt;insert_artist = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda-&gt;db,
+<a name="l00356"></a>00356         <span class="stringliteral">"INSERT INTO audio_artists (name) VALUES (?)"</span>);
+<a name="l00357"></a>00357     <span class="keywordflow">if</span> (!lda-&gt;insert_artist)
+<a name="l00358"></a>00358         <span class="keywordflow">return</span> -3;
+<a name="l00359"></a>00359 
+<a name="l00360"></a>00360     lda-&gt;insert_album = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda-&gt;db,
+<a name="l00361"></a>00361         <span class="stringliteral">"INSERT INTO audio_albums (artist_id, name) VALUES (?, ?)"</span>);
+<a name="l00362"></a>00362     <span class="keywordflow">if</span> (!lda-&gt;insert_album)
+<a name="l00363"></a>00363         <span class="keywordflow">return</span> -4;
+<a name="l00364"></a>00364 
+<a name="l00365"></a>00365     lda-&gt;insert_genre = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda-&gt;db,
+<a name="l00366"></a>00366         <span class="stringliteral">"INSERT INTO audio_genres (name) VALUES (?)"</span>);
+<a name="l00367"></a>00367     <span class="keywordflow">if</span> (!lda-&gt;insert_genre)
+<a name="l00368"></a>00368         <span class="keywordflow">return</span> -5;
+<a name="l00369"></a>00369 
+<a name="l00370"></a>00370     lda-&gt;get_artist = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda-&gt;db,
+<a name="l00371"></a>00371         <span class="stringliteral">"SELECT id FROM audio_artists WHERE name = ? LIMIT 1"</span>);
+<a name="l00372"></a>00372     <span class="keywordflow">if</span> (!lda-&gt;get_artist)
+<a name="l00373"></a>00373         <span class="keywordflow">return</span> -6;
+<a name="l00374"></a>00374 
+<a name="l00375"></a>00375     lda-&gt;get_album = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda-&gt;db,
+<a name="l00376"></a>00376         <span class="stringliteral">"SELECT id FROM audio_albums WHERE name = ? AND artist_id = ? LIMIT 1"</span>);
+<a name="l00377"></a>00377     <span class="keywordflow">if</span> (!lda-&gt;get_album)
+<a name="l00378"></a>00378         <span class="keywordflow">return</span> -7;
+<a name="l00379"></a>00379 
+<a name="l00380"></a>00380     lda-&gt;get_genre = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda-&gt;db,
+<a name="l00381"></a>00381         <span class="stringliteral">"SELECT id FROM audio_genres WHERE name = ? LIMIT 1"</span>);
+<a name="l00382"></a>00382     <span class="keywordflow">if</span> (!lda-&gt;get_genre)
+<a name="l00383"></a>00383         <span class="keywordflow">return</span> -8;
+<a name="l00384"></a>00384 
+<a name="l00385"></a>00385     lda-&gt;_is_started = 1;
+<a name="l00386"></a>00386     <span class="keywordflow">return</span> 0;
+<a name="l00387"></a>00387 }
+<a name="l00388"></a>00388 
+<a name="l00401"></a>00401 <span class="keywordtype">int</span>
+<a name="l00402"></a><a class="code" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">00402</a> <a class="code" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lms_db_audio_free</a>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda)
+<a name="l00403"></a>00403 {
+<a name="l00404"></a>00404     <span class="keywordtype">int</span> r;
+<a name="l00405"></a>00405 
+<a name="l00406"></a>00406     <span class="keywordflow">if</span> (!lda)
+<a name="l00407"></a>00407         <span class="keywordflow">return</span> -1;
+<a name="l00408"></a>00408     <span class="keywordflow">if</span> (lda-&gt;_references == 0) {
+<a name="l00409"></a>00409         fprintf(stderr, <span class="stringliteral">"ERROR: over-called lms_db_audio_free(%p)\n"</span>, lda);
+<a name="l00410"></a>00410         <span class="keywordflow">return</span> -1;
+<a name="l00411"></a>00411     }
+<a name="l00412"></a>00412 
+<a name="l00413"></a>00413     lda-&gt;_references--;
+<a name="l00414"></a>00414     <span class="keywordflow">if</span> (lda-&gt;_references &gt; 0)
+<a name="l00415"></a>00415         <span class="keywordflow">return</span> 0;
+<a name="l00416"></a>00416 
+<a name="l00417"></a>00417     <span class="keywordflow">if</span> (lda-&gt;insert_audio)
+<a name="l00418"></a>00418         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda-&gt;insert_audio, <span class="stringliteral">"insert_audio"</span>);
+<a name="l00419"></a>00419 
+<a name="l00420"></a>00420     <span class="keywordflow">if</span> (lda-&gt;insert_artist)
+<a name="l00421"></a>00421         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda-&gt;insert_artist, <span class="stringliteral">"insert_artist"</span>);
+<a name="l00422"></a>00422 
+<a name="l00423"></a>00423     <span class="keywordflow">if</span> (lda-&gt;insert_album)
+<a name="l00424"></a>00424         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda-&gt;insert_album, <span class="stringliteral">"insert_album"</span>);
+<a name="l00425"></a>00425 
+<a name="l00426"></a>00426     <span class="keywordflow">if</span> (lda-&gt;insert_genre)
+<a name="l00427"></a>00427         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda-&gt;insert_genre, <span class="stringliteral">"insert_genre"</span>);
+<a name="l00428"></a>00428 
+<a name="l00429"></a>00429     <span class="keywordflow">if</span> (lda-&gt;get_artist)
+<a name="l00430"></a>00430         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda-&gt;get_artist, <span class="stringliteral">"get_artist"</span>);
+<a name="l00431"></a>00431 
+<a name="l00432"></a>00432     <span class="keywordflow">if</span> (lda-&gt;get_album)
+<a name="l00433"></a>00433         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda-&gt;get_album, <span class="stringliteral">"get_album"</span>);
+<a name="l00434"></a>00434 
+<a name="l00435"></a>00435     <span class="keywordflow">if</span> (lda-&gt;get_genre)
+<a name="l00436"></a>00436         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda-&gt;get_genre, <span class="stringliteral">"get_genre"</span>);
+<a name="l00437"></a>00437 
+<a name="l00438"></a>00438     r = <a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a>(&amp;_cache, lda-&gt;db, lda);
+<a name="l00439"></a>00439     free(lda);
+<a name="l00440"></a>00440 
+<a name="l00441"></a>00441     <span class="keywordflow">return</span> r;
+<a name="l00442"></a>00442 }
+<a name="l00443"></a>00443 
+<a name="l00444"></a>00444 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00445"></a>00445 _db_get_id_by_name(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__string__size.html">lms_string_size</a> *name, int64_t *<span class="keywordtype">id</span>)
+<a name="l00446"></a>00446 {
+<a name="l00447"></a>00447     <span class="keywordtype">int</span> r, ret;
+<a name="l00448"></a>00448 
+<a name="l00449"></a>00449     ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 1, name-&gt;<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, name-&gt;<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00450"></a>00450     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00451"></a>00451         <span class="keywordflow">goto</span> done;
+<a name="l00452"></a>00452 
+<a name="l00453"></a>00453     r = sqlite3_step(stmt);
+<a name="l00454"></a>00454     <span class="keywordflow">if</span> (r == SQLITE_DONE) {
+<a name="l00455"></a>00455         ret = 1;
+<a name="l00456"></a>00456         <span class="keywordflow">goto</span> done;
+<a name="l00457"></a>00457     }
+<a name="l00458"></a>00458 
+<a name="l00459"></a>00459     <span class="keywordflow">if</span> (r != SQLITE_ROW) {
+<a name="l00460"></a>00460         fprintf(stderr, <span class="stringliteral">"ERROR: could not get id by name: %s\n"</span>,
+<a name="l00461"></a>00461                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00462"></a>00462         ret = -2;
+<a name="l00463"></a>00463         <span class="keywordflow">goto</span> done;
+<a name="l00464"></a>00464     }
+<a name="l00465"></a>00465 
+<a name="l00466"></a>00466     *<span class="keywordtype">id</span> = sqlite3_column_int64(stmt, 0);
+<a name="l00467"></a>00467     ret = 0;
+<a name="l00468"></a>00468 
+<a name="l00469"></a>00469   done:
+<a name="l00470"></a>00470     <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00471"></a>00471 
+<a name="l00472"></a>00472     <span class="keywordflow">return</span> ret;
+<a name="l00473"></a>00473 
+<a name="l00474"></a>00474 }
+<a name="l00475"></a>00475 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00476"></a>00476 _db_insert_name(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__string__size.html">lms_string_size</a> *name, int64_t *<span class="keywordtype">id</span>)
+<a name="l00477"></a>00477 {
+<a name="l00478"></a>00478     <span class="keywordtype">int</span> r, ret;
+<a name="l00479"></a>00479 
+<a name="l00480"></a>00480     ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 1, name-&gt;<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, name-&gt;<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00481"></a>00481     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00482"></a>00482         <span class="keywordflow">goto</span> done;
+<a name="l00483"></a>00483 
+<a name="l00484"></a>00484     r = sqlite3_step(stmt);
+<a name="l00485"></a>00485     <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00486"></a>00486         fprintf(stderr, <span class="stringliteral">"ERROR: could not insert name: %s\n"</span>,
+<a name="l00487"></a>00487                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00488"></a>00488         ret = -2;
+<a name="l00489"></a>00489         <span class="keywordflow">goto</span> done;
+<a name="l00490"></a>00490     }
+<a name="l00491"></a>00491 
+<a name="l00492"></a>00492     *<span class="keywordtype">id</span> = sqlite3_last_insert_rowid(sqlite3_db_handle(stmt));
+<a name="l00493"></a>00493     ret = 0;
+<a name="l00494"></a>00494 
+<a name="l00495"></a>00495   done:
+<a name="l00496"></a>00496     <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00497"></a>00497 
+<a name="l00498"></a>00498     <span class="keywordflow">return</span> ret;
+<a name="l00499"></a>00499 }
+<a name="l00500"></a>00500 
+<a name="l00501"></a>00501 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00502"></a>00502 _db_get_artist(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *artist_id)
+<a name="l00503"></a>00503 {
+<a name="l00504"></a>00504     <span class="keywordflow">return</span> _db_get_id_by_name(lda-&gt;get_artist, &amp;info-&gt;<a class="code" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">artist</a>, artist_id);
+<a name="l00505"></a>00505 }
+<a name="l00506"></a>00506 
+<a name="l00507"></a>00507 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00508"></a>00508 _db_insert_artist(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *artist_id)
+<a name="l00509"></a>00509 {
+<a name="l00510"></a>00510     <span class="keywordtype">int</span> r;
+<a name="l00511"></a>00511 
+<a name="l00512"></a>00512     <span class="keywordflow">if</span> (!info-&gt;<a class="code" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">artist</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>) <span class="comment">/* fast path for unknown artist */</span>
+<a name="l00513"></a>00513         <span class="keywordflow">return</span> 1;
+<a name="l00514"></a>00514 
+<a name="l00515"></a>00515     r =_db_get_artist(lda, info, artist_id);
+<a name="l00516"></a>00516     <span class="keywordflow">if</span> (r == 0)
+<a name="l00517"></a>00517         <span class="keywordflow">return</span> 0;
+<a name="l00518"></a>00518     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r &lt; 0)
+<a name="l00519"></a>00519         <span class="keywordflow">return</span> -1;
+<a name="l00520"></a>00520 
+<a name="l00521"></a>00521     <span class="keywordflow">return</span> _db_insert_name(lda-&gt;insert_artist, &amp;info-&gt;<a class="code" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">artist</a>, artist_id);
+<a name="l00522"></a>00522 }
+<a name="l00523"></a>00523 
+<a name="l00524"></a>00524 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00525"></a>00525 _db_get_album(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *artist_id, int64_t *album_id)
+<a name="l00526"></a>00526 {
+<a name="l00527"></a>00527     sqlite3_stmt *stmt;
+<a name="l00528"></a>00528     <span class="keywordtype">int</span> r, ret;
+<a name="l00529"></a>00529 
+<a name="l00530"></a>00530     stmt = lda-&gt;get_album;
+<a name="l00531"></a>00531 
+<a name="l00532"></a>00532     ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 1, info-&gt;<a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-&gt;<a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00533"></a>00533     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00534"></a>00534         <span class="keywordflow">goto</span> done;
+<a name="l00535"></a>00535 
+<a name="l00536"></a>00536     ret = <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(stmt, 2, artist_id);
+<a name="l00537"></a>00537     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00538"></a>00538         <span class="keywordflow">goto</span> done;
+<a name="l00539"></a>00539 
+<a name="l00540"></a>00540     r = sqlite3_step(stmt);
+<a name="l00541"></a>00541     <span class="keywordflow">if</span> (r == SQLITE_DONE) {
+<a name="l00542"></a>00542         ret = 1;
+<a name="l00543"></a>00543         <span class="keywordflow">goto</span> done;
+<a name="l00544"></a>00544     }
+<a name="l00545"></a>00545 
+<a name="l00546"></a>00546     <span class="keywordflow">if</span> (r != SQLITE_ROW) {
+<a name="l00547"></a>00547         fprintf(stderr, <span class="stringliteral">"ERROR: could not get album from table: %s\n"</span>,
+<a name="l00548"></a>00548                 sqlite3_errmsg(lda-&gt;db));
+<a name="l00549"></a>00549         ret = -2;
+<a name="l00550"></a>00550         <span class="keywordflow">goto</span> done;
+<a name="l00551"></a>00551     }
+<a name="l00552"></a>00552 
+<a name="l00553"></a>00553     *album_id = sqlite3_column_int64(stmt, 0);
+<a name="l00554"></a>00554     ret = 0;
+<a name="l00555"></a>00555 
+<a name="l00556"></a>00556   done:
+<a name="l00557"></a>00557     <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00558"></a>00558 
+<a name="l00559"></a>00559     <span class="keywordflow">return</span> ret;
+<a name="l00560"></a>00560 
+<a name="l00561"></a>00561 }
+<a name="l00562"></a>00562 
+<a name="l00563"></a>00563 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00564"></a>00564 _db_insert_album(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *album_id, int64_t *artist_id)
+<a name="l00565"></a>00565 {
+<a name="l00566"></a>00566     <span class="keywordtype">int</span> r, ret;
+<a name="l00567"></a>00567     sqlite3_stmt *stmt;
+<a name="l00568"></a>00568 
+<a name="l00569"></a>00569     <span class="keywordflow">if</span> (!info-&gt;<a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>) <span class="comment">/* fast path for unknown album */</span>
+<a name="l00570"></a>00570         <span class="keywordflow">return</span> 1;
+<a name="l00571"></a>00571 
+<a name="l00572"></a>00572     r =_db_get_album(lda, info, artist_id, album_id);
+<a name="l00573"></a>00573     <span class="keywordflow">if</span> (r == 0)
+<a name="l00574"></a>00574         <span class="keywordflow">return</span> 0;
+<a name="l00575"></a>00575     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r &lt; 0)
+<a name="l00576"></a>00576         <span class="keywordflow">return</span> -1;
+<a name="l00577"></a>00577 
+<a name="l00578"></a>00578     stmt = lda-&gt;insert_album;
+<a name="l00579"></a>00579     ret = <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(stmt, 1, artist_id);
+<a name="l00580"></a>00580     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00581"></a>00581         <span class="keywordflow">goto</span> done;
+<a name="l00582"></a>00582 
+<a name="l00583"></a>00583     ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 2, info-&gt;<a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-&gt;<a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00584"></a>00584     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00585"></a>00585         <span class="keywordflow">goto</span> done;
+<a name="l00586"></a>00586 
+<a name="l00587"></a>00587     r = sqlite3_step(stmt);
+<a name="l00588"></a>00588     <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00589"></a>00589         fprintf(stderr, <span class="stringliteral">"ERROR: could not insert audio album: %s\n"</span>,
+<a name="l00590"></a>00590                 sqlite3_errmsg(lda-&gt;db));
+<a name="l00591"></a>00591         ret = -3;
+<a name="l00592"></a>00592         <span class="keywordflow">goto</span> done;
+<a name="l00593"></a>00593     }
+<a name="l00594"></a>00594 
+<a name="l00595"></a>00595     *album_id = sqlite3_last_insert_rowid(lda-&gt;db);
+<a name="l00596"></a>00596     ret = 0;
+<a name="l00597"></a>00597 
+<a name="l00598"></a>00598   done:
+<a name="l00599"></a>00599     <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00600"></a>00600 
+<a name="l00601"></a>00601     <span class="keywordflow">return</span> ret;
+<a name="l00602"></a>00602 }
+<a name="l00603"></a>00603 
+<a name="l00604"></a>00604 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00605"></a>00605 _db_get_genre(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *genre_id)
+<a name="l00606"></a>00606 {
+<a name="l00607"></a>00607     <span class="keywordflow">return</span> _db_get_id_by_name(lda-&gt;get_genre, &amp;info-&gt;<a class="code" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">genre</a>, genre_id);
+<a name="l00608"></a>00608 }
+<a name="l00609"></a>00609 
+<a name="l00610"></a>00610 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00611"></a>00611 _db_insert_genre(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *genre_id)
+<a name="l00612"></a>00612 {
+<a name="l00613"></a>00613     <span class="keywordtype">int</span> r;
+<a name="l00614"></a>00614 
+<a name="l00615"></a>00615     <span class="keywordflow">if</span> (!info-&gt;<a class="code" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">genre</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>) <span class="comment">/* fast path for unknown genre */</span>
+<a name="l00616"></a>00616         <span class="keywordflow">return</span> 1;
+<a name="l00617"></a>00617 
+<a name="l00618"></a>00618     r =_db_get_genre(lda, info, genre_id);
+<a name="l00619"></a>00619     <span class="keywordflow">if</span> (r == 0)
+<a name="l00620"></a>00620         <span class="keywordflow">return</span> 0;
+<a name="l00621"></a>00621     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r &lt; 0)
+<a name="l00622"></a>00622         <span class="keywordflow">return</span> -1;
+<a name="l00623"></a>00623 
+<a name="l00624"></a>00624     <span class="keywordflow">return</span> _db_insert_name(lda-&gt;insert_genre, &amp;info-&gt;<a class="code" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">genre</a>, genre_id);
+<a name="l00625"></a>00625 }
+<a name="l00626"></a>00626 
+<a name="l00627"></a>00627 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00628"></a>00628 _db_insert_audio(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *album_id, int64_t *artist_id, int64_t *genre_id)
+<a name="l00629"></a>00629 {
+<a name="l00630"></a>00630     sqlite3_stmt *stmt;
+<a name="l00631"></a>00631     <span class="keywordtype">int</span> r, ret;
+<a name="l00632"></a>00632 
+<a name="l00633"></a>00633     stmt = lda-&gt;insert_audio;
+<a name="l00634"></a>00634     ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, info-&gt;<a class="code" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">id</a>);
+<a name="l00635"></a>00635     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00636"></a>00636         <span class="keywordflow">goto</span> done;
+<a name="l00637"></a>00637 
+<a name="l00638"></a>00638     ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 2, info-&gt;<a class="code" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">title</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-&gt;<a class="code" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">title</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00639"></a>00639     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00640"></a>00640         <span class="keywordflow">goto</span> done;
+<a name="l00641"></a>00641 
+<a name="l00642"></a>00642     ret = <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(stmt, 3, album_id);
+<a name="l00643"></a>00643     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00644"></a>00644         <span class="keywordflow">goto</span> done;
+<a name="l00645"></a>00645 
+<a name="l00646"></a>00646     ret = <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(stmt, 4, artist_id);
+<a name="l00647"></a>00647     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00648"></a>00648         <span class="keywordflow">goto</span> done;
+<a name="l00649"></a>00649 
+<a name="l00650"></a>00650     ret = <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(stmt, 5, genre_id);
+<a name="l00651"></a>00651     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00652"></a>00652         <span class="keywordflow">goto</span> done;
+<a name="l00653"></a>00653 
+<a name="l00654"></a>00654     ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 6, info-&gt;<a class="code" href="structlms__audio__info.html#d372f08ada955f75be8f218d90093242">trackno</a>);
+<a name="l00655"></a>00655     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00656"></a>00656         <span class="keywordflow">goto</span> done;
+<a name="l00657"></a>00657 
+<a name="l00658"></a>00658     ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 7, info-&gt;<a class="code" href="structlms__audio__info.html#932e73ccd8ff946831930be65d1ba2d2">rating</a>);
+<a name="l00659"></a>00659     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00660"></a>00660         <span class="keywordflow">goto</span> done;
+<a name="l00661"></a>00661 
+<a name="l00662"></a>00662     ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 8, info-&gt;<a class="code" href="structlms__audio__info.html#7197e471d313274c4e361b2ff9e60e8a">playcnt</a>);
+<a name="l00663"></a>00663     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00664"></a>00664         <span class="keywordflow">goto</span> done;
+<a name="l00665"></a>00665 
+<a name="l00666"></a>00666     r = sqlite3_step(stmt);
+<a name="l00667"></a>00667     <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00668"></a>00668         fprintf(stderr, <span class="stringliteral">"ERROR: could not insert audio info: %s\n"</span>,
+<a name="l00669"></a>00669                 sqlite3_errmsg(lda-&gt;db));
+<a name="l00670"></a>00670         ret = -9;
+<a name="l00671"></a>00671         <span class="keywordflow">goto</span> done;
+<a name="l00672"></a>00672     }
+<a name="l00673"></a>00673 
+<a name="l00674"></a>00674     ret = 0;
+<a name="l00675"></a>00675 
+<a name="l00676"></a>00676   done:
+<a name="l00677"></a>00677     <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00678"></a>00678 
+<a name="l00679"></a>00679     <span class="keywordflow">return</span> ret;
+<a name="l00680"></a>00680 }
+<a name="l00681"></a>00681 
+<a name="l00693"></a>00693 <span class="keywordtype">int</span>
+<a name="l00694"></a><a class="code" href="lightmediascanner__db__audio_8c.html#334b8c49f8dbf76024ee6b1d69f56c8c">00694</a> <a class="code" href="group__LMS__DB.html#g9b83f734ec4905778dec5494f39b7397">lms_db_audio_add</a>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info)
+<a name="l00695"></a>00695 {
+<a name="l00696"></a>00696     int64_t album_id, genre_id, artist_id;
+<a name="l00697"></a>00697     <span class="keywordtype">int</span> ret_album, ret_genre, ret_artist;
+<a name="l00698"></a>00698 
+<a name="l00699"></a>00699     <span class="keywordflow">if</span> (!lda)
+<a name="l00700"></a>00700         <span class="keywordflow">return</span> -1;
+<a name="l00701"></a>00701     <span class="keywordflow">if</span> (!info)
+<a name="l00702"></a>00702         <span class="keywordflow">return</span> -2;
+<a name="l00703"></a>00703     <span class="keywordflow">if</span> (info-&gt;<a class="code" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">id</a> &lt; 1)
+<a name="l00704"></a>00704         <span class="keywordflow">return</span> -3;
+<a name="l00705"></a>00705 
+<a name="l00706"></a>00706     ret_artist = _db_insert_artist(lda, info, &amp;artist_id);
+<a name="l00707"></a>00707     <span class="keywordflow">if</span> (ret_artist &lt; 0)
+<a name="l00708"></a>00708         <span class="keywordflow">return</span> -4;
+<a name="l00709"></a>00709 
+<a name="l00710"></a>00710     ret_album = _db_insert_album(lda, info, &amp;album_id,
+<a name="l00711"></a>00711                                  (ret_artist == 0) ? &amp;artist_id : NULL);
+<a name="l00712"></a>00712     <span class="keywordflow">if</span> (ret_album &lt; 0)
+<a name="l00713"></a>00713         <span class="keywordflow">return</span> -5;
+<a name="l00714"></a>00714 
+<a name="l00715"></a>00715     ret_genre = _db_insert_genre(lda, info, &amp;genre_id);
+<a name="l00716"></a>00716     <span class="keywordflow">if</span> (ret_genre &lt; 0)
+<a name="l00717"></a>00717         <span class="keywordflow">return</span> -6;
+<a name="l00718"></a>00718 
+<a name="l00719"></a>00719     <span class="keywordflow">return</span> _db_insert_audio(lda, info,
+<a name="l00720"></a>00720                             (ret_album == 0) ? &amp;album_id : NULL,
+<a name="l00721"></a>00721                             (ret_artist == 0) ? &amp;artist_id : NULL,
+<a name="l00722"></a>00722                             (ret_genre == 0) ? &amp;genre_id : NULL);
+<a name="l00723"></a>00723 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__audio_8c.html b/www/api/lightmediascanner__db__audio_8c.html
new file mode 100644 (file)
index 0000000..99a12d7
--- /dev/null
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_db_audio.c File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>src/lib/lightmediascanner_db_audio.c File Reference</h1><code>#include &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&quot;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</code><br>
+
+<p>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_db_audio.c:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<a href="lightmediascanner__db__audio_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">_DB_T_UPDATE</a>(db, name, array)&nbsp;&nbsp;&nbsp;lms_db_table_update_if_required(db, name, LMS_ARRAY_SIZE(array), array)</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lms_db_audio_start</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lms_db_audio_free</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__audio_8c.html#334b8c49f8dbf76024ee6b1d69f56c8c">lms_db_audio_add</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, struct <a class="el" href="structlms__audio__info.html">lms_audio_info</a> *info)</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="d2a4e90aa49af7291552e6ac172aaa51"></a><!-- doxytag: member="lightmediascanner_db_audio.c::_DB_T_UPDATE" ref="d2a4e90aa49af7291552e6ac172aaa51" args="(db, name, array)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _DB_T_UPDATE          </td>
+          <td>(</td>
+          <td class="paramtype">db,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">name,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">array&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td>&nbsp;&nbsp;&nbsp;lms_db_table_update_if_required(db, name, LMS_ARRAY_SIZE(array), array)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00254">254</a> of file <a class="el" href="lightmediascanner__db__audio_8c-source.html">lightmediascanner_db_audio.c</a>.</p>
+
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="334b8c49f8dbf76024ee6b1d69f56c8c"></a><!-- doxytag: member="lightmediascanner_db_audio.c::lms_db_audio_add" ref="334b8c49f8dbf76024ee6b1d69f56c8c" args="(lms_db_audio_t *lda, struct lms_audio_info *info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_audio_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lda</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__audio__info.html">lms_audio_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add audio file to DB.<p>
+This is usually called from plugin's <b>parse()</b> callback.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>lda</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>info</em>&nbsp;</td><td>audio information to store.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00694">694</a> of file <a class="el" href="lightmediascanner__db__audio_8c-source.html">lightmediascanner_db_audio.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db_8h-source.html#l00087">lms_audio_info::id</a>.</p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__audio_8c__incl.dot b/www/api/lightmediascanner__db__audio_8c__incl.dot
new file mode 100644 (file)
index 0000000..3932dac
--- /dev/null
@@ -0,0 +1,30 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_db_audio.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lightmediascanner_db.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lightmediascanner_plugin.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__plugin_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lightmediascanner.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8h.html"];
+  Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="lightmediascanner_charset_conv.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__charset__conv_8h.html"];
+  Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="sqlite3.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="lightmediascanner_utils.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__utils_8h.html"];
+  Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="lightmediascanner_db_private.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__private_8h.html"];
+  Node9 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="stdlib.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="stdio.h",height=0.2,width=0.4,color="grey75"];
+}
diff --git a/www/api/lightmediascanner__db__audio_8c__incl.md5 b/www/api/lightmediascanner__db__audio_8c__incl.md5
new file mode 100644 (file)
index 0000000..461a0e4
--- /dev/null
@@ -0,0 +1 @@
+99726fe86b247bafa6516dcbb4cfbf1f
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c-source.html b/www/api/lightmediascanner__db__common_8c-source.html
new file mode 100644 (file)
index 0000000..a1b0f48
--- /dev/null
@@ -0,0 +1,798 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_db_common.c Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>src/lib/lightmediascanner_db_common.c</h1><a href="lightmediascanner__db__common_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;string.h&gt;</span>
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 <span class="preprocessor">#if SQLITE_VERSION_NUMBER &lt; 3003009</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="keywordtype">int</span>
+<a name="l00028"></a><a class="code" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405">00028</a> <a class="code" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405">sqlite3_prepare_v2</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *sql, <span class="keywordtype">int</span> len, sqlite3_stmt **stmt, <span class="keyword">const</span> <span class="keywordtype">char</span> **tail)
+<a name="l00029"></a>00029 {
+<a name="l00030"></a>00030     <span class="keywordflow">return</span> sqlite3_prepare(db, sql, len, stmt, tail);
+<a name="l00031"></a>00031 }
+<a name="l00032"></a>00032 <span class="preprocessor">#endif </span><span class="comment">/* SQLITE_VERSION_NUMBER &lt; 3003009 */</span>
+<a name="l00033"></a>00033 
+<a name="l00034"></a>00034 <span class="preprocessor">#if SQLITE_VERSION_NUMBER &lt; 3003007</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="keywordtype">int</span>
+<a name="l00036"></a><a class="code" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00">00036</a> <a class="code" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00">sqlite3_clear_bindings</a>(sqlite3_stmt *stmt)
+<a name="l00037"></a>00037 {
+<a name="l00038"></a>00038     <span class="keywordtype">int</span> i, last;
+<a name="l00039"></a>00039     <span class="keywordtype">int</span> rc;
+<a name="l00040"></a>00040 
+<a name="l00041"></a>00041     rc = SQLITE_OK;
+<a name="l00042"></a>00042     last = sqlite3_bind_parameter_count(stmt);
+<a name="l00043"></a>00043     <span class="keywordflow">for</span>(i = 1; rc == SQLITE_OK &amp;&amp; i &lt;= last; i++) {
+<a name="l00044"></a>00044         rc = sqlite3_bind_null(stmt, i);
+<a name="l00045"></a>00045     }
+<a name="l00046"></a>00046     <span class="keywordflow">return</span> rc;
+<a name="l00047"></a>00047 }
+<a name="l00048"></a>00048 <span class="preprocessor">#endif </span><span class="comment">/* SQLITE_VERSION_NUMBER &lt; 3003007 */</span>
+<a name="l00049"></a>00049 
+<a name="l00050"></a>00050 <span class="preprocessor">#if SQLITE_VERSION_NUMBER &lt; 3003008</span>
+<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="comment">/* Until 3.3.8 it doesn't support CREATE TRIGGER IF NOT EXISTS, so</span>
+<a name="l00052"></a>00052 <span class="comment"> * just ignore errors :-(</span>
+<a name="l00053"></a>00053 <span class="comment"> */</span>
+<a name="l00054"></a>00054 <span class="keywordtype">int</span>
+<a name="l00055"></a><a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">00055</a> <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *sql)
+<a name="l00056"></a>00056 {
+<a name="l00057"></a>00057     <span class="keywordtype">char</span> *errmsg, *query;
+<a name="l00058"></a>00058     <span class="keywordtype">int</span> r, sql_len, prefix_len;
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060     prefix_len = <span class="keyword">sizeof</span>(<span class="stringliteral">"CREATE TRIGGER "</span>) - 1;
+<a name="l00061"></a>00061     sql_len = strlen(sql);
+<a name="l00062"></a>00062     query = malloc((prefix_len + sql_len + 1) * <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>));
+<a name="l00063"></a>00063     <span class="keywordflow">if</span> (!query)
+<a name="l00064"></a>00064         <span class="keywordflow">return</span> -1;
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066     memcpy(query, <span class="stringliteral">"CREATE TRIGGER "</span>, prefix_len);
+<a name="l00067"></a>00067     memcpy(query + prefix_len, sql, sql_len + 1);
+<a name="l00068"></a>00068     r = sqlite3_exec(db, query, NULL, NULL, &amp;errmsg);
+<a name="l00069"></a>00069     free(query);
+<a name="l00070"></a>00070     <span class="keywordflow">if</span> (r != SQLITE_OK)
+<a name="l00071"></a>00071         sqlite3_free(errmsg);
+<a name="l00072"></a>00072     <span class="keywordflow">return</span> 0;
+<a name="l00073"></a>00073 }
+<a name="l00074"></a>00074 <span class="preprocessor">#else </span><span class="comment">/* SQLITE_VERSION_NUMBER &lt; 3003008 */</span>
+<a name="l00075"></a>00075 <span class="keywordtype">int</span>
+<a name="l00076"></a>00076 <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *sql)
+<a name="l00077"></a>00077 {
+<a name="l00078"></a>00078     <span class="keywordtype">char</span> *errmsg, *query;
+<a name="l00079"></a>00079     <span class="keywordtype">int</span> r, sql_len, prefix_len;
+<a name="l00080"></a>00080 
+<a name="l00081"></a>00081     prefix_len = <span class="keyword">sizeof</span>(<span class="stringliteral">"CREATE TRIGGER IF NOT EXISTS "</span>) - 1;
+<a name="l00082"></a>00082     sql_len = strlen(sql);
+<a name="l00083"></a>00083     query = malloc((prefix_len + sql_len + 1) * <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>));
+<a name="l00084"></a>00084     <span class="keywordflow">if</span> (!query)
+<a name="l00085"></a>00085         <span class="keywordflow">return</span> -1;
+<a name="l00086"></a>00086 
+<a name="l00087"></a>00087     memcpy(query, <span class="stringliteral">"CREATE TRIGGER IF NOT EXISTS "</span>, prefix_len);
+<a name="l00088"></a>00088     memcpy(query + prefix_len, sql, sql_len + 1);
+<a name="l00089"></a>00089     r = sqlite3_exec(db, query, NULL, NULL, &amp;errmsg);
+<a name="l00090"></a>00090     free(query);
+<a name="l00091"></a>00091     <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00092"></a>00092         fprintf(stderr, <span class="stringliteral">"ERROR: could not create trigger: %s\n"</span>, errmsg);
+<a name="l00093"></a>00093         sqlite3_free(errmsg);
+<a name="l00094"></a>00094         <span class="keywordflow">return</span> -2;
+<a name="l00095"></a>00095     }
+<a name="l00096"></a>00096     <span class="keywordflow">return</span> 0;
+<a name="l00097"></a>00097 }
+<a name="l00098"></a>00098 <span class="preprocessor">#endif </span><span class="comment">/* SQLITE_VERSION_NUMBER &lt; 3003008 */</span>
+<a name="l00099"></a>00099 
+<a name="l00100"></a>00100 sqlite3_stmt *
+<a name="l00101"></a><a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">00101</a> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *sql)
+<a name="l00102"></a>00102 {
+<a name="l00103"></a>00103     sqlite3_stmt *stmt;
+<a name="l00104"></a>00104 
+<a name="l00105"></a>00105     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405">sqlite3_prepare_v2</a>(db, sql, -1, &amp;stmt, NULL) != SQLITE_OK)
+<a name="l00106"></a>00106         fprintf(stderr, <span class="stringliteral">"ERROR: could not prepare \"%s\": %s\n"</span>, sql,
+<a name="l00107"></a>00107                 sqlite3_errmsg(db));
+<a name="l00108"></a>00108 
+<a name="l00109"></a>00109     <span class="keywordflow">return</span> stmt;
+<a name="l00110"></a>00110 }
+<a name="l00111"></a>00111 
+<a name="l00112"></a>00112 <span class="keywordtype">int</span>
+<a name="l00113"></a><a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">00113</a> <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
+<a name="l00114"></a>00114 {
+<a name="l00115"></a>00115     <span class="keywordtype">int</span> r;
+<a name="l00116"></a>00116 
+<a name="l00117"></a>00117     r = sqlite3_finalize(stmt);
+<a name="l00118"></a>00118     <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00119"></a>00119         fprintf(stderr, <span class="stringliteral">"ERROR: could not finalize %s statement: #%d\n"</span>,
+<a name="l00120"></a>00120                 name, r);
+<a name="l00121"></a>00121         <span class="keywordflow">return</span> -1;
+<a name="l00122"></a>00122     }
+<a name="l00123"></a>00123 
+<a name="l00124"></a>00124     <span class="keywordflow">return</span> 0;
+<a name="l00125"></a>00125 }
+<a name="l00126"></a>00126 
+<a name="l00127"></a>00127 <span class="keywordtype">int</span>
+<a name="l00128"></a><a class="code" href="lightmediascanner__db__private_8h.html#ee78f418f0f3c9ead3023b1453c63556">00128</a> <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(sqlite3_stmt *stmt)
+<a name="l00129"></a>00129 {
+<a name="l00130"></a>00130     <span class="keywordtype">int</span> r, ret;
+<a name="l00131"></a>00131 
+<a name="l00132"></a>00132     ret = r = sqlite3_reset(stmt);
+<a name="l00133"></a>00133     <span class="keywordflow">if</span> (r != SQLITE_OK)
+<a name="l00134"></a>00134         fprintf(stderr, <span class="stringliteral">"ERROR: could not reset SQL statement: #%d\n"</span>, r);
+<a name="l00135"></a>00135 
+<a name="l00136"></a>00136     r = <a class="code" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00">sqlite3_clear_bindings</a>(stmt);
+<a name="l00137"></a>00137     ret += r;
+<a name="l00138"></a>00138     <span class="keywordflow">if</span> (r != SQLITE_OK)
+<a name="l00139"></a>00139         fprintf(stderr, <span class="stringliteral">"ERROR: could not clear SQL: #%d\n"</span>, r);
+<a name="l00140"></a>00140 
+<a name="l00141"></a>00141     <span class="keywordflow">return</span> ret;
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143 
+<a name="l00144"></a>00144 <span class="keywordtype">int</span>
+<a name="l00145"></a><a class="code" href="lightmediascanner__db__private_8h.html#14d56e02624ad6130bc59ae9bb950ac3">00145</a> <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, <span class="keyword">const</span> <span class="keywordtype">char</span> *text, <span class="keywordtype">int</span> len)
+<a name="l00146"></a>00146 {
+<a name="l00147"></a>00147     <span class="keywordtype">int</span> r;
+<a name="l00148"></a>00148 
+<a name="l00149"></a>00149     <span class="keywordflow">if</span> (text)
+<a name="l00150"></a>00150         r = sqlite3_bind_text(stmt, col, text, len, SQLITE_STATIC);
+<a name="l00151"></a>00151     <span class="keywordflow">else</span>
+<a name="l00152"></a>00152         r = sqlite3_bind_null(stmt, col);
+<a name="l00153"></a>00153 
+<a name="l00154"></a>00154     <span class="keywordflow">if</span> (r == SQLITE_OK)
+<a name="l00155"></a>00155         <span class="keywordflow">return</span> 0;
+<a name="l00156"></a>00156     <span class="keywordflow">else</span> {
+<a name="l00157"></a>00157         sqlite3 *db;
+<a name="l00158"></a>00158         <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
+<a name="l00159"></a>00159 
+<a name="l00160"></a>00160         db = sqlite3_db_handle(stmt);
+<a name="l00161"></a>00161         err = sqlite3_errmsg(db);
+<a name="l00162"></a>00162         fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
+<a name="l00163"></a>00163         <span class="keywordflow">return</span> -col;
+<a name="l00164"></a>00164     }
+<a name="l00165"></a>00165 }
+<a name="l00166"></a>00166 
+<a name="l00167"></a>00167 <span class="keywordtype">int</span>
+<a name="l00168"></a><a class="code" href="lightmediascanner__db__private_8h.html#7fd514b582578c18a25cdbf6c561243c">00168</a> <a class="code" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lms_db_bind_blob</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, <span class="keyword">const</span> <span class="keywordtype">void</span> *blob, <span class="keywordtype">int</span> len)
+<a name="l00169"></a>00169 {
+<a name="l00170"></a>00170     <span class="keywordtype">int</span> r;
+<a name="l00171"></a>00171 
+<a name="l00172"></a>00172     <span class="keywordflow">if</span> (blob)
+<a name="l00173"></a>00173         r = sqlite3_bind_blob(stmt, col, blob, len, SQLITE_STATIC);
+<a name="l00174"></a>00174     <span class="keywordflow">else</span>
+<a name="l00175"></a>00175         r = sqlite3_bind_null(stmt, col);
+<a name="l00176"></a>00176 
+<a name="l00177"></a>00177     <span class="keywordflow">if</span> (r == SQLITE_OK)
+<a name="l00178"></a>00178         <span class="keywordflow">return</span> 0;
+<a name="l00179"></a>00179     <span class="keywordflow">else</span> {
+<a name="l00180"></a>00180         sqlite3 *db;
+<a name="l00181"></a>00181         <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
+<a name="l00182"></a>00182 
+<a name="l00183"></a>00183         db = sqlite3_db_handle(stmt);
+<a name="l00184"></a>00184         err = sqlite3_errmsg(db);
+<a name="l00185"></a>00185         fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
+<a name="l00186"></a>00186         <span class="keywordflow">return</span> -col;
+<a name="l00187"></a>00187     }
+<a name="l00188"></a>00188 }
+<a name="l00189"></a>00189 
+<a name="l00190"></a>00190 <span class="keywordtype">int</span>
+<a name="l00191"></a><a class="code" href="lightmediascanner__db__private_8h.html#bbb18d7cc44f7e363c0f240849d72c31">00191</a> <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, int64_t value)
+<a name="l00192"></a>00192 {
+<a name="l00193"></a>00193     <span class="keywordtype">int</span> r;
+<a name="l00194"></a>00194 
+<a name="l00195"></a>00195     r = sqlite3_bind_int64(stmt, col, value);
+<a name="l00196"></a>00196     <span class="keywordflow">if</span> (r == SQLITE_OK)
+<a name="l00197"></a>00197         <span class="keywordflow">return</span> 0;
+<a name="l00198"></a>00198     <span class="keywordflow">else</span> {
+<a name="l00199"></a>00199         sqlite3 *db;
+<a name="l00200"></a>00200         <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
+<a name="l00201"></a>00201 
+<a name="l00202"></a>00202         db = sqlite3_db_handle(stmt);
+<a name="l00203"></a>00203         err = sqlite3_errmsg(db);
+<a name="l00204"></a>00204         fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
+<a name="l00205"></a>00205         <span class="keywordflow">return</span> -col;
+<a name="l00206"></a>00206     }
+<a name="l00207"></a>00207 }
+<a name="l00208"></a>00208 
+<a name="l00209"></a>00209 <span class="keywordtype">int</span>
+<a name="l00210"></a><a class="code" href="lightmediascanner__db__private_8h.html#cd7006f0271b9a47937dc2d2ae5480fe">00210</a> <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, int64_t *p_value)
+<a name="l00211"></a>00211 {
+<a name="l00212"></a>00212     <span class="keywordtype">int</span> r;
+<a name="l00213"></a>00213 
+<a name="l00214"></a>00214     <span class="keywordflow">if</span> (p_value)
+<a name="l00215"></a>00215         r = sqlite3_bind_int64(stmt, col, *p_value);
+<a name="l00216"></a>00216     <span class="keywordflow">else</span>
+<a name="l00217"></a>00217         r = sqlite3_bind_null(stmt, col);
+<a name="l00218"></a>00218     <span class="keywordflow">if</span> (r == SQLITE_OK)
+<a name="l00219"></a>00219         <span class="keywordflow">return</span> 0;
+<a name="l00220"></a>00220     <span class="keywordflow">else</span> {
+<a name="l00221"></a>00221         sqlite3 *db;
+<a name="l00222"></a>00222         <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
+<a name="l00223"></a>00223 
+<a name="l00224"></a>00224         db = sqlite3_db_handle(stmt);
+<a name="l00225"></a>00225         err = sqlite3_errmsg(db);
+<a name="l00226"></a>00226         fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
+<a name="l00227"></a>00227         <span class="keywordflow">return</span> -col;
+<a name="l00228"></a>00228     }
+<a name="l00229"></a>00229 }
+<a name="l00230"></a>00230 
+<a name="l00231"></a>00231 <span class="keywordtype">int</span>
+<a name="l00232"></a><a class="code" href="lightmediascanner__db__private_8h.html#37815f859116b46089bea4ba84bb23d2">00232</a> <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, <span class="keywordtype">int</span> value)
+<a name="l00233"></a>00233 {
+<a name="l00234"></a>00234     <span class="keywordtype">int</span> r;
+<a name="l00235"></a>00235 
+<a name="l00236"></a>00236     r = sqlite3_bind_int(stmt, col, value);
+<a name="l00237"></a>00237     <span class="keywordflow">if</span> (r == SQLITE_OK)
+<a name="l00238"></a>00238         <span class="keywordflow">return</span> 0;
+<a name="l00239"></a>00239     <span class="keywordflow">else</span> {
+<a name="l00240"></a>00240         sqlite3 *db;
+<a name="l00241"></a>00241         <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
+<a name="l00242"></a>00242 
+<a name="l00243"></a>00243         db = sqlite3_db_handle(stmt);
+<a name="l00244"></a>00244         err = sqlite3_errmsg(db);
+<a name="l00245"></a>00245         fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
+<a name="l00246"></a>00246         <span class="keywordflow">return</span> -col;
+<a name="l00247"></a>00247     }
+<a name="l00248"></a>00248 }
+<a name="l00249"></a>00249 
+<a name="l00250"></a>00250 <span class="keywordtype">int</span>
+<a name="l00251"></a><a class="code" href="lightmediascanner__db__private_8h.html#9e78297037179998924354e73ca69349">00251</a> <a class="code" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lms_db_bind_double</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, <span class="keywordtype">double</span> value)
+<a name="l00252"></a>00252 {
+<a name="l00253"></a>00253     <span class="keywordtype">int</span> r;
+<a name="l00254"></a>00254 
+<a name="l00255"></a>00255     r = sqlite3_bind_double(stmt, col, value);
+<a name="l00256"></a>00256     <span class="keywordflow">if</span> (r == SQLITE_OK)
+<a name="l00257"></a>00257         <span class="keywordflow">return</span> 0;
+<a name="l00258"></a>00258     <span class="keywordflow">else</span> {
+<a name="l00259"></a>00259         sqlite3 *db;
+<a name="l00260"></a>00260         <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
+<a name="l00261"></a>00261 
+<a name="l00262"></a>00262         db = sqlite3_db_handle(stmt);
+<a name="l00263"></a>00263         err = sqlite3_errmsg(db);
+<a name="l00264"></a>00264         fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
+<a name="l00265"></a>00265         <span class="keywordflow">return</span> -col;
+<a name="l00266"></a>00266     }
+<a name="l00267"></a>00267 }
+<a name="l00268"></a>00268 
+<a name="l00269"></a>00269 <span class="keywordtype">int</span>
+<a name="l00270"></a><a class="code" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd">00270</a> <a class="code" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd">lms_db_table_version_get</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table)
+<a name="l00271"></a>00271 {
+<a name="l00272"></a>00272     <span class="keywordtype">int</span> r, version;
+<a name="l00273"></a>00273     sqlite3_stmt *stmt;
+<a name="l00274"></a>00274 
+<a name="l00275"></a>00275     stmt = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
+<a name="l00276"></a>00276          <span class="stringliteral">"SELECT version FROM lms_internal WHERE tab = ?"</span>);
+<a name="l00277"></a>00277     <span class="keywordflow">if</span> (!stmt)
+<a name="l00278"></a>00278         <span class="keywordflow">return</span> -1;
+<a name="l00279"></a>00279 
+<a name="l00280"></a>00280     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 1, table, -1) != 0) {
+<a name="l00281"></a>00281         version = -1;
+<a name="l00282"></a>00282         <span class="keywordflow">goto</span> done;
+<a name="l00283"></a>00283     }
+<a name="l00284"></a>00284 
+<a name="l00285"></a>00285     r = sqlite3_step(stmt);
+<a name="l00286"></a>00286     <span class="keywordflow">if</span> (r == SQLITE_DONE)
+<a name="l00287"></a>00287         version = 0;
+<a name="l00288"></a>00288     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r == SQLITE_ROW)
+<a name="l00289"></a>00289         version = sqlite3_column_int(stmt, 0);
+<a name="l00290"></a>00290     <span class="keywordflow">else</span> {
+<a name="l00291"></a>00291         version = -1;
+<a name="l00292"></a>00292         fprintf(stderr, <span class="stringliteral">"ERROR: could not get table '%s' version: %s\n"</span>,
+<a name="l00293"></a>00293                 table, sqlite3_errmsg(db));
+<a name="l00294"></a>00294     }
+<a name="l00295"></a>00295 
+<a name="l00296"></a>00296   done:
+<a name="l00297"></a>00297     <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00298"></a>00298     <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(stmt, <span class="stringliteral">"table_version_get"</span>);
+<a name="l00299"></a>00299 
+<a name="l00300"></a>00300     <span class="keywordflow">return</span> version;
+<a name="l00301"></a>00301 }
+<a name="l00302"></a>00302 
+<a name="l00303"></a>00303 <span class="keywordtype">int</span>
+<a name="l00304"></a><a class="code" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">00304</a> <a class="code" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">lms_db_table_version_set</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> version)
+<a name="l00305"></a>00305 {
+<a name="l00306"></a>00306     <span class="keywordtype">int</span> r, ret;
+<a name="l00307"></a>00307     sqlite3_stmt *stmt;
+<a name="l00308"></a>00308 
+<a name="l00309"></a>00309     stmt = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
+<a name="l00310"></a>00310         <span class="stringliteral">"INSERT OR REPLACE INTO lms_internal (tab, version) VALUES (?, ?)"</span>);
+<a name="l00311"></a>00311     <span class="keywordflow">if</span> (!stmt)
+<a name="l00312"></a>00312         <span class="keywordflow">return</span> -1;
+<a name="l00313"></a>00313 
+<a name="l00314"></a>00314     ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 1, table, -1);
+<a name="l00315"></a>00315     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00316"></a>00316         <span class="keywordflow">goto</span> done;
+<a name="l00317"></a>00317 
+<a name="l00318"></a>00318     ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 2, version);
+<a name="l00319"></a>00319     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00320"></a>00320         <span class="keywordflow">goto</span> done;
+<a name="l00321"></a>00321 
+<a name="l00322"></a>00322     r = sqlite3_step(stmt);
+<a name="l00323"></a>00323     <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00324"></a>00324         ret = -1;
+<a name="l00325"></a>00325         fprintf(stderr, <span class="stringliteral">"ERROR: could not set table '%s' version: %s\n"</span>,
+<a name="l00326"></a>00326                 table, sqlite3_errmsg(db));
+<a name="l00327"></a>00327     }
+<a name="l00328"></a>00328 
+<a name="l00329"></a>00329   done:
+<a name="l00330"></a>00330     <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00331"></a>00331     <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(stmt, <span class="stringliteral">"table_version_set"</span>);
+<a name="l00332"></a>00332 
+<a name="l00333"></a>00333     <span class="keywordflow">return</span> ret;
+<a name="l00334"></a>00334 }
+<a name="l00335"></a>00335 
+<a name="l00336"></a>00336 <span class="keywordtype">int</span>
+<a name="l00337"></a><a class="code" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">00337</a> <a class="code" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">lms_db_table_update</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> last_version, <span class="keyword">const</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *updaters)
+<a name="l00338"></a>00338 {
+<a name="l00339"></a>00339     <span class="keywordflow">if</span> (current_version == last_version)
+<a name="l00340"></a>00340         <span class="keywordflow">return</span> 0;
+<a name="l00341"></a>00341     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (current_version &gt; last_version) {
+<a name="l00342"></a>00342         fprintf(stderr,
+<a name="l00343"></a>00343                 <span class="stringliteral">"WARNING: current version (%d) of table '%s' is greater than "</span>
+<a name="l00344"></a>00344                 <span class="stringliteral">"last known version (%d), no updates will be made.\n"</span>,
+<a name="l00345"></a>00345                 current_version, table, last_version);
+<a name="l00346"></a>00346         <span class="keywordflow">return</span> 0;
+<a name="l00347"></a>00347     }
+<a name="l00348"></a>00348 
+<a name="l00349"></a>00349     <span class="keywordflow">for</span> (; current_version &lt; last_version; current_version++) {
+<a name="l00350"></a>00350         <span class="keywordtype">int</span> r, is_last_run;
+<a name="l00351"></a>00351 
+<a name="l00352"></a>00352         is_last_run = current_version == (last_version - 1);
+<a name="l00353"></a>00353         r = updaters[current_version](db, table, current_version, is_last_run);
+<a name="l00354"></a>00354         <span class="keywordflow">if</span> (r != 0) {
+<a name="l00355"></a>00355             fprintf(stderr,
+<a name="l00356"></a>00356                     <span class="stringliteral">"ERROR: could not update table '%s' from version %d-&gt;%d\n"</span>,
+<a name="l00357"></a>00357                     table, current_version, current_version + 1);
+<a name="l00358"></a>00358             <span class="keywordflow">return</span> r;
+<a name="l00359"></a>00359         }
+<a name="l00360"></a>00360         <a class="code" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">lms_db_table_version_set</a>(db, table, current_version + 1);
+<a name="l00361"></a>00361     }
+<a name="l00362"></a>00362 
+<a name="l00363"></a>00363     <span class="keywordflow">return</span> 0;
+<a name="l00364"></a>00364 }
+<a name="l00365"></a>00365 
+<a name="l00366"></a>00366 <span class="keywordtype">int</span>
+<a name="l00367"></a><a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">00367</a> <a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> last_version, <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *updaters)
+<a name="l00368"></a>00368 {
+<a name="l00369"></a>00369     <span class="keywordtype">int</span> current_version;
+<a name="l00370"></a>00370 
+<a name="l00371"></a>00371     current_version = <a class="code" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd">lms_db_table_version_get</a>(db, table);
+<a name="l00372"></a>00372     <span class="keywordflow">if</span> (current_version &lt; 0)
+<a name="l00373"></a>00373         <span class="keywordflow">return</span> -1;
+<a name="l00374"></a>00374     <span class="keywordflow">else</span>
+<a name="l00375"></a>00375         <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">lms_db_table_update</a>(db, table, current_version, last_version,
+<a name="l00376"></a>00376                                    updaters);
+<a name="l00377"></a>00377 }
+<a name="l00378"></a>00378 
+<a name="l00379"></a>00379 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00380"></a>00380 lms_db_cache_find_db(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keyword">const</span> sqlite3 *db)
+<a name="l00381"></a>00381 {
+<a name="l00382"></a>00382     <span class="keywordtype">int</span> i;
+<a name="l00383"></a>00383 
+<a name="l00384"></a>00384     <span class="keywordflow">for</span> (i = 0; i &lt; cache-&gt;<a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a>; i++)
+<a name="l00385"></a>00385         <span class="keywordflow">if</span> (cache-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>[i].<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a> == db)
+<a name="l00386"></a>00386             <span class="keywordflow">return</span> i;
+<a name="l00387"></a>00387 
+<a name="l00388"></a>00388     <span class="keywordflow">return</span> -1;
+<a name="l00389"></a>00389 }
+<a name="l00390"></a>00390 
+<a name="l00391"></a>00391 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00392"></a>00392 lms_db_cache_resize(<span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keywordtype">int</span> new_size)
+<a name="l00393"></a>00393 {
+<a name="l00394"></a>00394     cache-&gt;<a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> = new_size;
+<a name="l00395"></a>00395     cache-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a> = realloc(cache-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>,
+<a name="l00396"></a>00396                              cache-&gt;<a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> * <span class="keyword">sizeof</span>(*cache-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>));
+<a name="l00397"></a>00397     <span class="keywordflow">if</span> (cache-&gt;<a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> &amp;&amp; !cache-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>) {
+<a name="l00398"></a>00398         perror(<span class="stringliteral">"realloc"</span>);
+<a name="l00399"></a>00399         cache-&gt;<a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> = 0;
+<a name="l00400"></a>00400         <span class="keywordflow">return</span> -1;
+<a name="l00401"></a>00401     }
+<a name="l00402"></a>00402 
+<a name="l00403"></a>00403     <span class="keywordflow">return</span> 0;
+<a name="l00404"></a>00404 }
+<a name="l00405"></a>00405 
+<a name="l00406"></a>00406 <span class="keywordtype">int</span>
+<a name="l00407"></a><a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">00407</a> <a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a>(<span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keyword">const</span> sqlite3 *db, <span class="keywordtype">void</span> *data)
+<a name="l00408"></a>00408 {
+<a name="l00409"></a>00409     <span class="keyword">struct </span><a class="code" href="structlms__db__cache__entry.html">lms_db_cache_entry</a> *e;
+<a name="l00410"></a>00410     <span class="keywordtype">int</span> idx;
+<a name="l00411"></a>00411 
+<a name="l00412"></a>00412     idx = lms_db_cache_find_db(cache, db);
+<a name="l00413"></a>00413     <span class="keywordflow">if</span> (idx &gt;= 0) {
+<a name="l00414"></a>00414         e = cache-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a> + idx;
+<a name="l00415"></a>00415         <span class="keywordflow">if</span> (e-&gt;<a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a> == data)
+<a name="l00416"></a>00416             <span class="keywordflow">return</span> 0;
+<a name="l00417"></a>00417         <span class="keywordflow">else</span> {
+<a name="l00418"></a>00418             fprintf(stderr,
+<a name="l00419"></a>00419                     <span class="stringliteral">"ERROR: cache %p for db %p has another data registered"</span>
+<a name="l00420"></a>00420                     <span class="stringliteral">": %p (current is %p)\n"</span>, cache, db, e-&gt;<a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>, data);
+<a name="l00421"></a>00421             <span class="keywordflow">return</span> -1;
+<a name="l00422"></a>00422         }
+<a name="l00423"></a>00423     }
+<a name="l00424"></a>00424 
+<a name="l00425"></a>00425     idx = cache-&gt;<a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a>;
+<a name="l00426"></a>00426     <span class="keywordflow">if</span> (lms_db_cache_resize(cache, cache-&gt;<a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> + 1) != 0) {
+<a name="l00427"></a>00427         <span class="keywordflow">return</span> -2;
+<a name="l00428"></a>00428     }
+<a name="l00429"></a>00429 
+<a name="l00430"></a>00430     e = cache-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a> + idx;
+<a name="l00431"></a>00431     e-&gt;<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a> = db;
+<a name="l00432"></a>00432     e-&gt;<a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a> = data;
+<a name="l00433"></a>00433     <span class="keywordflow">return</span> 0;
+<a name="l00434"></a>00434 }
+<a name="l00435"></a>00435 
+<a name="l00436"></a>00436 <span class="keywordtype">int</span>
+<a name="l00437"></a><a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">00437</a> <a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a>(<span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keyword">const</span> sqlite3 *db, <span class="keywordtype">void</span> *<a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>)
+<a name="l00438"></a>00438 {
+<a name="l00439"></a>00439     <span class="keywordtype">int</span> idx;
+<a name="l00440"></a>00440     <span class="keyword">struct </span><a class="code" href="structlms__db__cache__entry.html">lms_db_cache_entry</a> *e;
+<a name="l00441"></a>00441 
+<a name="l00442"></a>00442     idx = lms_db_cache_find_db(cache, db);
+<a name="l00443"></a>00443     <span class="keywordflow">if</span> (idx &lt; 0) {
+<a name="l00444"></a>00444         fprintf(stderr, <span class="stringliteral">"ERROR: no db %p found in cache %p\n"</span>, db, cache);
+<a name="l00445"></a>00445         <span class="keywordflow">return</span> -1;
+<a name="l00446"></a>00446     }
+<a name="l00447"></a>00447 
+<a name="l00448"></a>00448     e = cache-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a> + idx;
+<a name="l00449"></a>00449     <span class="keywordflow">if</span> (e-&gt;<a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a> != data) {
+<a name="l00450"></a>00450         fprintf(stderr, <span class="stringliteral">"ERROR: data mismatch in request to delete from cache: "</span>
+<a name="l00451"></a>00451                 <span class="stringliteral">"want %p, has %p, cache %p, db %p\n"</span>, data, e-&gt;<a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>, cache, db);
+<a name="l00452"></a>00452         <span class="keywordflow">return</span> -2;
+<a name="l00453"></a>00453     }
+<a name="l00454"></a>00454 
+<a name="l00455"></a>00455     <span class="keywordflow">for</span> (; idx &lt; cache-&gt;<a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> - 1; idx++)
+<a name="l00456"></a>00456         cache-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>[idx] = cache-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>[idx + 1];
+<a name="l00457"></a>00457 
+<a name="l00458"></a>00458     <span class="keywordflow">return</span> lms_db_cache_resize(cache, cache-&gt;<a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> - 1);
+<a name="l00459"></a>00459 }
+<a name="l00460"></a>00460 
+<a name="l00461"></a>00461 <span class="keywordtype">int</span>
+<a name="l00462"></a><a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">00462</a> <a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a>(<span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keyword">const</span> sqlite3 *db, <span class="keywordtype">void</span> **pdata)
+<a name="l00463"></a>00463 {
+<a name="l00464"></a>00464     <span class="keywordtype">int</span> idx;
+<a name="l00465"></a>00465 
+<a name="l00466"></a>00466     idx = lms_db_cache_find_db(cache, db);
+<a name="l00467"></a>00467     <span class="keywordflow">if</span> (idx &lt; 0)
+<a name="l00468"></a>00468         <span class="keywordflow">return</span> -1;
+<a name="l00469"></a>00469 
+<a name="l00470"></a>00470     *pdata = cache-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>[idx].<a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>;
+<a name="l00471"></a>00471     <span class="keywordflow">return</span> 0;
+<a name="l00472"></a>00472 }
+<a name="l00473"></a>00473 
+<a name="l00474"></a>00474 <span class="keywordtype">int</span>
+<a name="l00475"></a><a class="code" href="lightmediascanner__db__private_8h.html#13ca09c885535a2968e707120e935268">00475</a> <a class="code" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lms_db_create_core_tables_if_required</a>(sqlite3 *db)
+<a name="l00476"></a>00476 {
+<a name="l00477"></a>00477     <span class="keywordtype">char</span> *errmsg;
+<a name="l00478"></a>00478     <span class="keywordtype">int</span> r;
+<a name="l00479"></a>00479 
+<a name="l00480"></a>00480     errmsg = NULL;
+<a name="l00481"></a>00481     r = sqlite3_exec(db,
+<a name="l00482"></a>00482                      <span class="stringliteral">"CREATE TABLE IF NOT EXISTS lms_internal ("</span>
+<a name="l00483"></a>00483                      <span class="stringliteral">"tab TEXT NOT NULL UNIQUE, "</span>
+<a name="l00484"></a>00484                      <span class="stringliteral">"version INTEGER NOT NULL"</span>
+<a name="l00485"></a>00485                      <span class="stringliteral">")"</span>,
+<a name="l00486"></a>00486                      NULL, NULL, &amp;errmsg);
+<a name="l00487"></a>00487     <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00488"></a>00488         fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'lms_internal' table: %s\n"</span>,
+<a name="l00489"></a>00489                 errmsg);
+<a name="l00490"></a>00490         sqlite3_free(errmsg);
+<a name="l00491"></a>00491         <span class="keywordflow">return</span> -1;
+<a name="l00492"></a>00492     }
+<a name="l00493"></a>00493 
+<a name="l00494"></a>00494     r = sqlite3_exec(db,
+<a name="l00495"></a>00495                      <span class="stringliteral">"CREATE TABLE IF NOT EXISTS files ("</span>
+<a name="l00496"></a>00496                      <span class="stringliteral">"id INTEGER PRIMARY KEY AUTOINCREMENT, "</span>
+<a name="l00497"></a>00497                      <span class="stringliteral">"path BLOB NOT NULL UNIQUE, "</span>
+<a name="l00498"></a>00498                      <span class="stringliteral">"mtime INTEGER NOT NULL, "</span>
+<a name="l00499"></a>00499                      <span class="stringliteral">"dtime INTEGER NOT NULL, "</span>
+<a name="l00500"></a>00500                      <span class="stringliteral">"size INTEGER NOT NULL"</span>
+<a name="l00501"></a>00501                      <span class="stringliteral">")"</span>,
+<a name="l00502"></a>00502                      NULL, NULL, &amp;errmsg);
+<a name="l00503"></a>00503     <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00504"></a>00504         fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'files' table: %s\n"</span>, errmsg);
+<a name="l00505"></a>00505         sqlite3_free(errmsg);
+<a name="l00506"></a>00506         <span class="keywordflow">return</span> -2;
+<a name="l00507"></a>00507     }
+<a name="l00508"></a>00508 
+<a name="l00509"></a>00509     r = sqlite3_exec(db,
+<a name="l00510"></a>00510                      <span class="stringliteral">"CREATE INDEX IF NOT EXISTS files_path_idx ON files ("</span>
+<a name="l00511"></a>00511                      <span class="stringliteral">"path"</span>
+<a name="l00512"></a>00512                      <span class="stringliteral">")"</span>,
+<a name="l00513"></a>00513                      NULL, NULL, &amp;errmsg);
+<a name="l00514"></a>00514     <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00515"></a>00515         fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'files_path_idx' index: %s\n"</span>,
+<a name="l00516"></a>00516                 errmsg);
+<a name="l00517"></a>00517         sqlite3_free(errmsg);
+<a name="l00518"></a>00518         <span class="keywordflow">return</span> -3;
+<a name="l00519"></a>00519     }
+<a name="l00520"></a>00520 
+<a name="l00521"></a>00521     <span class="keywordflow">return</span> 0;
+<a name="l00522"></a>00522 }
+<a name="l00523"></a>00523 
+<a name="l00524"></a>00524 
+<a name="l00525"></a>00525 sqlite3_stmt *
+<a name="l00526"></a><a class="code" href="lightmediascanner__db__private_8h.html#073c254ca7b4d3f42e1be1854bcc42a3">00526</a> <a class="code" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lms_db_compile_stmt_begin_transaction</a>(sqlite3 *db)
+<a name="l00527"></a>00527 {
+<a name="l00528"></a>00528     <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db, <span class="stringliteral">"BEGIN TRANSACTION"</span>);
+<a name="l00529"></a>00529 }
+<a name="l00530"></a>00530 
+<a name="l00531"></a>00531 <span class="keywordtype">int</span>
+<a name="l00532"></a><a class="code" href="lightmediascanner__db__private_8h.html#3a7256cb653542bbf563feeb2aa2d0ea">00532</a> <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(sqlite3_stmt *stmt)
+<a name="l00533"></a>00533 {
+<a name="l00534"></a>00534     <span class="keywordtype">int</span> r, ret;
+<a name="l00535"></a>00535 
+<a name="l00536"></a>00536     ret = 0;
+<a name="l00537"></a>00537     r = sqlite3_step(stmt);
+<a name="l00538"></a>00538     <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00539"></a>00539         fprintf(stderr, <span class="stringliteral">"ERROR: could not begin transaction: %s\n"</span>,
+<a name="l00540"></a>00540                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00541"></a>00541         ret = -1;
+<a name="l00542"></a>00542     }
+<a name="l00543"></a>00543 
+<a name="l00544"></a>00544     r = sqlite3_reset(stmt);
+<a name="l00545"></a>00545     <span class="keywordflow">if</span> (r != SQLITE_OK)
+<a name="l00546"></a>00546         fprintf(stderr, <span class="stringliteral">"ERROR: could not reset SQL statement: %s\n"</span>,
+<a name="l00547"></a>00547                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00548"></a>00548 
+<a name="l00549"></a>00549     <span class="keywordflow">return</span> ret;
+<a name="l00550"></a>00550 }
+<a name="l00551"></a>00551 
+<a name="l00552"></a>00552 sqlite3_stmt *
+<a name="l00553"></a><a class="code" href="lightmediascanner__db__private_8h.html#09feca4fbfde33d5647cdd5cc2de6500">00553</a> <a class="code" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lms_db_compile_stmt_end_transaction</a>(sqlite3 *db)
+<a name="l00554"></a>00554 {
+<a name="l00555"></a>00555     <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db, <span class="stringliteral">"COMMIT"</span>);
+<a name="l00556"></a>00556 }
+<a name="l00557"></a>00557 
+<a name="l00558"></a>00558 <span class="keywordtype">int</span>
+<a name="l00559"></a><a class="code" href="lightmediascanner__db__private_8h.html#8ee7bfba83958b80f717a6ccbad2a84c">00559</a> <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(sqlite3_stmt *stmt)
+<a name="l00560"></a>00560 {
+<a name="l00561"></a>00561     <span class="keywordtype">int</span> r, ret;
+<a name="l00562"></a>00562 
+<a name="l00563"></a>00563     ret = 0;
+<a name="l00564"></a>00564     r = sqlite3_step(stmt);
+<a name="l00565"></a>00565     <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00566"></a>00566         fprintf(stderr, <span class="stringliteral">"ERROR: could not end transaction: %s\n"</span>,
+<a name="l00567"></a>00567                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00568"></a>00568         ret = -1;
+<a name="l00569"></a>00569     }
+<a name="l00570"></a>00570 
+<a name="l00571"></a>00571     r = sqlite3_reset(stmt);
+<a name="l00572"></a>00572     <span class="keywordflow">if</span> (r != SQLITE_OK)
+<a name="l00573"></a>00573         fprintf(stderr, <span class="stringliteral">"ERROR: could not reset SQL statement: %s\n"</span>,
+<a name="l00574"></a>00574                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00575"></a>00575 
+<a name="l00576"></a>00576     <span class="keywordflow">return</span> ret;
+<a name="l00577"></a>00577 }
+<a name="l00578"></a>00578 
+<a name="l00579"></a>00579 sqlite3_stmt *
+<a name="l00580"></a><a class="code" href="lightmediascanner__db__private_8h.html#327d54a6dac083e356fd609298a0cbd5">00580</a> <a class="code" href="lightmediascanner__db__common_8c.html#b00a624bc01da9b796f7bc6e1d507cf8">lms_db_compile_stmt_get_file_info</a>(sqlite3 *db)
+<a name="l00581"></a>00581 {
+<a name="l00582"></a>00582     <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
+<a name="l00583"></a>00583         <span class="stringliteral">"SELECT id, mtime, dtime, size FROM files WHERE path = ?"</span>);
+<a name="l00584"></a>00584 }
+<a name="l00585"></a>00585 
+<a name="l00586"></a>00586 <span class="keywordtype">int</span>
+<a name="l00587"></a><a class="code" href="lightmediascanner__db__common_8c.html#c0b7cf0b2eb0f55fbf8a4103bc9569d1">00587</a> <a class="code" href="lightmediascanner__db__common_8c.html#c0b7cf0b2eb0f55fbf8a4103bc9569d1">lms_db_get_file_info</a>(sqlite3_stmt *stmt, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
+<a name="l00588"></a>00588 {
+<a name="l00589"></a>00589     <span class="keywordtype">int</span> r, ret;
+<a name="l00590"></a>00590 
+<a name="l00591"></a>00591     ret = <a class="code" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lms_db_bind_blob</a>(stmt, 1, finfo-&gt;<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, finfo-&gt;<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>);
+<a name="l00592"></a>00592     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00593"></a>00593         <span class="keywordflow">goto</span> done;
+<a name="l00594"></a>00594 
+<a name="l00595"></a>00595     r = sqlite3_step(stmt);
+<a name="l00596"></a>00596     <span class="keywordflow">if</span> (r == SQLITE_DONE) {
+<a name="l00597"></a>00597         ret = 1;
+<a name="l00598"></a>00598         finfo-&gt;<a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = -1;
+<a name="l00599"></a>00599         <span class="keywordflow">goto</span> done;
+<a name="l00600"></a>00600     }
+<a name="l00601"></a>00601 
+<a name="l00602"></a>00602     <span class="keywordflow">if</span> (r != SQLITE_ROW) {
+<a name="l00603"></a>00603         fprintf(stderr, <span class="stringliteral">"ERROR: could not get file info from table: %s\n"</span>,
+<a name="l00604"></a>00604                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00605"></a>00605         ret = -2;
+<a name="l00606"></a>00606         <span class="keywordflow">goto</span> done;
+<a name="l00607"></a>00607     }
+<a name="l00608"></a>00608 
+<a name="l00609"></a>00609     finfo-&gt;<a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = sqlite3_column_int64(stmt, 0);
+<a name="l00610"></a>00610     finfo-&gt;<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = sqlite3_column_int(stmt, 1);
+<a name="l00611"></a>00611     finfo-&gt;<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = sqlite3_column_int(stmt, 2);
+<a name="l00612"></a>00612     finfo-&gt;<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = sqlite3_column_int(stmt, 3);
+<a name="l00613"></a>00613     ret = 0;
+<a name="l00614"></a>00614 
+<a name="l00615"></a>00615   done:
+<a name="l00616"></a>00616     <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00617"></a>00617 
+<a name="l00618"></a>00618     <span class="keywordflow">return</span> ret;
+<a name="l00619"></a>00619 }
+<a name="l00620"></a>00620 
+<a name="l00621"></a>00621 sqlite3_stmt *
+<a name="l00622"></a><a class="code" href="lightmediascanner__db__private_8h.html#69eb9d9058d9432f7658f9adffb79ed6">00622</a> <a class="code" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lms_db_compile_stmt_update_file_info</a>(sqlite3 *db)
+<a name="l00623"></a>00623 {
+<a name="l00624"></a>00624     <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
+<a name="l00625"></a>00625         <span class="stringliteral">"UPDATE files SET mtime = ?, dtime = ?, size = ? WHERE id = ?"</span>);
+<a name="l00626"></a>00626 }
+<a name="l00627"></a>00627 
+<a name="l00628"></a>00628 <span class="keywordtype">int</span>
+<a name="l00629"></a><a class="code" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">00629</a> <a class="code" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lms_db_update_file_info</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
+<a name="l00630"></a>00630 {
+<a name="l00631"></a>00631     <span class="keywordtype">int</span> r, ret;
+<a name="l00632"></a>00632 
+<a name="l00633"></a>00633     ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 1, finfo-&gt;<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a>);
+<a name="l00634"></a>00634     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00635"></a>00635         <span class="keywordflow">goto</span> done;
+<a name="l00636"></a>00636 
+<a name="l00637"></a>00637     ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 2, finfo-&gt;<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>);
+<a name="l00638"></a>00638     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00639"></a>00639         <span class="keywordflow">goto</span> done;
+<a name="l00640"></a>00640 
+<a name="l00641"></a>00641     ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 3, finfo-&gt;<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a>);
+<a name="l00642"></a>00642     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00643"></a>00643         <span class="keywordflow">goto</span> done;
+<a name="l00644"></a>00644 
+<a name="l00645"></a>00645     ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 4, finfo-&gt;<a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a>);
+<a name="l00646"></a>00646     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00647"></a>00647         <span class="keywordflow">goto</span> done;
+<a name="l00648"></a>00648 
+<a name="l00649"></a>00649     r = sqlite3_step(stmt);
+<a name="l00650"></a>00650     <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00651"></a>00651         fprintf(stderr, <span class="stringliteral">"ERROR: could not update file info: %s\n"</span>,
+<a name="l00652"></a>00652                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00653"></a>00653         ret = -5;
+<a name="l00654"></a>00654         <span class="keywordflow">goto</span> done;
+<a name="l00655"></a>00655     }
+<a name="l00656"></a>00656 
+<a name="l00657"></a>00657     ret = 0;
+<a name="l00658"></a>00658 
+<a name="l00659"></a>00659   done:
+<a name="l00660"></a>00660     <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00661"></a>00661 
+<a name="l00662"></a>00662     <span class="keywordflow">return</span> ret;
+<a name="l00663"></a>00663 }
+<a name="l00664"></a>00664 
+<a name="l00665"></a>00665 sqlite3_stmt *
+<a name="l00666"></a><a class="code" href="lightmediascanner__db__private_8h.html#bf21f88ddbe28a8290d0df32af0f079c">00666</a> <a class="code" href="lightmediascanner__db__common_8c.html#9a5886e755eb428ac811956144eee0dc">lms_db_compile_stmt_insert_file_info</a>(sqlite3 *db)
+<a name="l00667"></a>00667 {
+<a name="l00668"></a>00668     <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
+<a name="l00669"></a>00669         <span class="stringliteral">"INSERT INTO files (path, mtime, dtime, size) VALUES(?, ?, ?, ?)"</span>);
+<a name="l00670"></a>00670 }
+<a name="l00671"></a>00671 
+<a name="l00672"></a>00672 <span class="keywordtype">int</span>
+<a name="l00673"></a><a class="code" href="lightmediascanner__db__common_8c.html#e529ad5c4478d53685c65ec69dc5b1f4">00673</a> <a class="code" href="lightmediascanner__db__common_8c.html#e529ad5c4478d53685c65ec69dc5b1f4">lms_db_insert_file_info</a>(sqlite3_stmt *stmt, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
+<a name="l00674"></a>00674 {
+<a name="l00675"></a>00675     <span class="keywordtype">int</span> r, ret;
+<a name="l00676"></a>00676 
+<a name="l00677"></a>00677     ret = <a class="code" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lms_db_bind_blob</a>(stmt, 1, finfo-&gt;<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, finfo-&gt;<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>);
+<a name="l00678"></a>00678     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00679"></a>00679         <span class="keywordflow">goto</span> done;
+<a name="l00680"></a>00680 
+<a name="l00681"></a>00681     ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 2, finfo-&gt;<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a>);
+<a name="l00682"></a>00682     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00683"></a>00683         <span class="keywordflow">goto</span> done;
+<a name="l00684"></a>00684 
+<a name="l00685"></a>00685     ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 3, finfo-&gt;<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>);
+<a name="l00686"></a>00686     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00687"></a>00687         <span class="keywordflow">goto</span> done;
+<a name="l00688"></a>00688 
+<a name="l00689"></a>00689     ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 4, finfo-&gt;<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a>);
+<a name="l00690"></a>00690     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00691"></a>00691         <span class="keywordflow">goto</span> done;
+<a name="l00692"></a>00692 
+<a name="l00693"></a>00693     r = sqlite3_step(stmt);
+<a name="l00694"></a>00694     <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00695"></a>00695         fprintf(stderr, <span class="stringliteral">"ERROR: could not insert file info: %s\n"</span>,
+<a name="l00696"></a>00696                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00697"></a>00697         ret = -5;
+<a name="l00698"></a>00698         <span class="keywordflow">goto</span> done;
+<a name="l00699"></a>00699     }
+<a name="l00700"></a>00700 
+<a name="l00701"></a>00701     finfo-&gt;<a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = sqlite3_last_insert_rowid(sqlite3_db_handle(stmt));
+<a name="l00702"></a>00702     ret = 0;
+<a name="l00703"></a>00703 
+<a name="l00704"></a>00704   done:
+<a name="l00705"></a>00705     <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00706"></a>00706 
+<a name="l00707"></a>00707     <span class="keywordflow">return</span> ret;
+<a name="l00708"></a>00708 }
+<a name="l00709"></a>00709 
+<a name="l00710"></a>00710 sqlite3_stmt *
+<a name="l00711"></a><a class="code" href="lightmediascanner__db__private_8h.html#76941bdbbdb711fff821343e91c2cd97">00711</a> <a class="code" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lms_db_compile_stmt_delete_file_info</a>(sqlite3 *db)
+<a name="l00712"></a>00712 {
+<a name="l00713"></a>00713     <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db, <span class="stringliteral">"DELETE FROM files WHERE id = ?"</span>);
+<a name="l00714"></a>00714 }
+<a name="l00715"></a>00715 
+<a name="l00716"></a>00716 <span class="keywordtype">int</span>
+<a name="l00717"></a><a class="code" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">00717</a> <a class="code" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lms_db_delete_file_info</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
+<a name="l00718"></a>00718 {
+<a name="l00719"></a>00719     <span class="keywordtype">int</span> r, ret;
+<a name="l00720"></a>00720 
+<a name="l00721"></a>00721     ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, finfo-&gt;<a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a>);
+<a name="l00722"></a>00722     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00723"></a>00723         <span class="keywordflow">goto</span> done;
+<a name="l00724"></a>00724 
+<a name="l00725"></a>00725     r = sqlite3_step(stmt);
+<a name="l00726"></a>00726     <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00727"></a>00727         fprintf(stderr, <span class="stringliteral">"ERROR: could not delete file info: %s\n"</span>,
+<a name="l00728"></a>00728                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00729"></a>00729         ret = -2;
+<a name="l00730"></a>00730         <span class="keywordflow">goto</span> done;
+<a name="l00731"></a>00731     }
+<a name="l00732"></a>00732     ret = 0;
+<a name="l00733"></a>00733 
+<a name="l00734"></a>00734   done:
+<a name="l00735"></a>00735     <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00736"></a>00736 
+<a name="l00737"></a>00737     <span class="keywordflow">return</span> ret;
+<a name="l00738"></a>00738 }
+<a name="l00739"></a>00739 
+<a name="l00740"></a>00740 sqlite3_stmt *
+<a name="l00741"></a><a class="code" href="lightmediascanner__db__private_8h.html#08c34b5b1b6e927a696ff0ce66562f54">00741</a> <a class="code" href="lightmediascanner__db__common_8c.html#1b6950ca9e548670a4cb7fd0ec5220a8">lms_db_compile_stmt_set_file_dtime</a>(sqlite3 *db)
+<a name="l00742"></a>00742 {
+<a name="l00743"></a>00743     <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db, <span class="stringliteral">"UPDATE files SET dtime = ? WHERE id = ?"</span>);
+<a name="l00744"></a>00744 }
+<a name="l00745"></a>00745 
+<a name="l00746"></a>00746 <span class="keywordtype">int</span>
+<a name="l00747"></a><a class="code" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">00747</a> <a class="code" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">lms_db_set_file_dtime</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
+<a name="l00748"></a>00748 {
+<a name="l00749"></a>00749     <span class="keywordtype">int</span> r, ret;
+<a name="l00750"></a>00750 
+<a name="l00751"></a>00751     ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 1, finfo-&gt;<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>);
+<a name="l00752"></a>00752     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00753"></a>00753         <span class="keywordflow">goto</span> done;
+<a name="l00754"></a>00754 
+<a name="l00755"></a>00755     ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, finfo-&gt;<a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a>);
+<a name="l00756"></a>00756     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00757"></a>00757         <span class="keywordflow">goto</span> done;
+<a name="l00758"></a>00758 
+<a name="l00759"></a>00759     r = sqlite3_step(stmt);
+<a name="l00760"></a>00760     <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00761"></a>00761         fprintf(stderr, <span class="stringliteral">"ERROR: could not set file dtime: %s\n"</span>,
+<a name="l00762"></a>00762                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00763"></a>00763         ret = -3;
+<a name="l00764"></a>00764         <span class="keywordflow">goto</span> done;
+<a name="l00765"></a>00765     }
+<a name="l00766"></a>00766 
+<a name="l00767"></a>00767     ret = 0;
+<a name="l00768"></a>00768 
+<a name="l00769"></a>00769   done:
+<a name="l00770"></a>00770     <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00771"></a>00771 
+<a name="l00772"></a>00772     <span class="keywordflow">return</span> ret;
+<a name="l00773"></a>00773 }
+<a name="l00774"></a>00774 
+<a name="l00775"></a>00775 sqlite3_stmt *
+<a name="l00776"></a><a class="code" href="lightmediascanner__db__private_8h.html#1cc8a80961a0febdd099a028f3da9c30">00776</a> <a class="code" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lms_db_compile_stmt_get_files</a>(sqlite3 *db)
+<a name="l00777"></a>00777 {
+<a name="l00778"></a>00778     <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
+<a name="l00779"></a>00779         <span class="stringliteral">"SELECT id, path, mtime, dtime, size FROM files WHERE path LIKE ?"</span>);
+<a name="l00780"></a>00780 }
+<a name="l00781"></a>00781 
+<a name="l00782"></a>00782 <span class="keywordtype">int</span>
+<a name="l00783"></a><a class="code" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">00783</a> <a class="code" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">lms_db_get_files</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> len)
+<a name="l00784"></a>00784 {
+<a name="l00785"></a>00785     <span class="keywordtype">int</span> ret;
+<a name="l00786"></a>00786 
+<a name="l00787"></a>00787     ret = <a class="code" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lms_db_bind_blob</a>(stmt, 1, path, len);
+<a name="l00788"></a>00788     <span class="keywordflow">return</span> ret;
+<a name="l00789"></a>00789 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__common_8c.html b/www/api/lightmediascanner__db__common_8c.html
new file mode 100644 (file)
index 0000000..48e8cb0
--- /dev/null
@@ -0,0 +1,1449 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_db_common.c File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>src/lib/lightmediascanner_db_common.c File Reference</h1><code>#include &quot;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&quot;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</code><br>
+<code>#include &lt;string.h&gt;</code><br>
+
+<p>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_db_common.c:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<a href="lightmediascanner__db__common_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405">sqlite3_prepare_v2</a> (sqlite3 *db, const char *sql, int len, sqlite3_stmt **stmt, const char **tail)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00">sqlite3_clear_bindings</a> (sqlite3_stmt *stmt)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a> (sqlite3 *db, const char *sql)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a> (sqlite3 *db, const char *sql)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a> (sqlite3_stmt *stmt, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a> (sqlite3_stmt *stmt)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a> (sqlite3_stmt *stmt, int col, const char *text, int len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lms_db_bind_blob</a> (sqlite3_stmt *stmt, int col, const void *blob, int len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a> (sqlite3_stmt *stmt, int col, int64_t value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a> (sqlite3_stmt *stmt, int col, int64_t *p_value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a> (sqlite3_stmt *stmt, int col, int value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lms_db_bind_double</a> (sqlite3_stmt *stmt, int col, double value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd">lms_db_table_version_get</a> (sqlite3 *db, const char *table)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">lms_db_table_version_set</a> (sqlite3 *db, const char *table, unsigned int version)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">lms_db_table_update</a> (sqlite3 *db, const char *table, unsigned int current_version, unsigned int last_version, const <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *updaters)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a> (sqlite3 *db, const char *table, unsigned int last_version, <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *updaters)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a> (struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *cache, const sqlite3 *db, void *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a> (struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *cache, const sqlite3 *db, void *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a> (struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *cache, const sqlite3 *db, void **pdata)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lms_db_create_core_tables_if_required</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lms_db_compile_stmt_begin_transaction</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a> (sqlite3_stmt *stmt)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lms_db_compile_stmt_end_transaction</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a> (sqlite3_stmt *stmt)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#b00a624bc01da9b796f7bc6e1d507cf8">lms_db_compile_stmt_get_file_info</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#c0b7cf0b2eb0f55fbf8a4103bc9569d1">lms_db_get_file_info</a> (sqlite3_stmt *stmt, struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lms_db_compile_stmt_update_file_info</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lms_db_update_file_info</a> (sqlite3_stmt *stmt, const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#9a5886e755eb428ac811956144eee0dc">lms_db_compile_stmt_insert_file_info</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#e529ad5c4478d53685c65ec69dc5b1f4">lms_db_insert_file_info</a> (sqlite3_stmt *stmt, struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lms_db_compile_stmt_delete_file_info</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lms_db_delete_file_info</a> (sqlite3_stmt *stmt, const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#1b6950ca9e548670a4cb7fd0ec5220a8">lms_db_compile_stmt_set_file_dtime</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">lms_db_set_file_dtime</a> (sqlite3_stmt *stmt, const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lms_db_compile_stmt_get_files</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">lms_db_get_files</a> (sqlite3_stmt *stmt, const char *path, int len)</td></tr>
+
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="5ff807216285c93325ffaf33361dd6fc"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_begin_transaction" ref="5ff807216285c93325ffaf33361dd6fc" args="(sqlite3_stmt *stmt)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_begin_transaction           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00532">532</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01047">lms_process_single_process()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="fee26461dbd6c89c82794c94aaeeaef6"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_bind_blob" ref="fee26461dbd6c89c82794c94aaeeaef6" args="(sqlite3_stmt *stmt, int col, const void *blob, int len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_blob           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&nbsp;</td>
+          <td class="paramname"> <em>blob</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00168">168</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00783">lms_db_get_files()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="4ae660a876f1e362d1ab2f8c68bdef3f"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_bind_double" ref="4ae660a876f1e362d1ab2f8c68bdef3f" args="(sqlite3_stmt *stmt, int col, double value)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_double           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double&nbsp;</td>
+          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00251">251</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="de261036cf3228f0b6a79a9c68687c4f"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_bind_int" ref="de261036cf3228f0b6a79a9c68687c4f" args="(sqlite3_stmt *stmt, int col, int value)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_int           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00232">232</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">lms_db_set_file_dtime()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">lms_db_update_file_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="f2fe78bc45dc33d843313a846db5ce7c"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_bind_int64" ref="f2fe78bc45dc33d843313a846db5ce7c" args="(sqlite3_stmt *stmt, int col, int64_t value)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_int64           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int64_t&nbsp;</td>
+          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00191">191</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00717">lms_db_delete_file_info()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">lms_db_set_file_dtime()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="2a0a5d3a27fdee8508b2b0cc59979417"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_bind_int64_or_null" ref="2a0a5d3a27fdee8508b2b0cc59979417" args="(sqlite3_stmt *stmt, int col, int64_t *p_value)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_int64_or_null           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int64_t *&nbsp;</td>
+          <td class="paramname"> <em>p_value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00210">210</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="88c461ae88da3eb47987c5a0b15c5888"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_bind_text" ref="88c461ae88da3eb47987c5a0b15c5888" args="(sqlite3_stmt *stmt, int col, const char *text, int len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_text           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>text</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00145">145</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00270">lms_db_table_version_get()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="19b0458b9d7b76370588156e931a9c04"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_cache_add" ref="19b0458b9d7b76370588156e931a9c04" args="(struct lms_db_cache *cache, const sqlite3 *db, void *data)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_cache_add           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *&nbsp;</td>
+          <td class="paramname"> <em>cache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&nbsp;</td>
+          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">407</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__private_8h-source.html#l00059">lms_db_cache_entry::data</a>, <a class="el" href="lightmediascanner__db__private_8h-source.html#l00058">lms_db_cache_entry::db</a>, <a class="el" href="lightmediascanner__db__private_8h-source.html#l00064">lms_db_cache::entries</a>, and <a class="el" href="lightmediascanner__db__private_8h-source.html#l00063">lms_db_cache::size</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00297">lms_db_audio_new()</a>, <a class="el" href="lightmediascanner__db__image_8c-source.html#l00117">lms_db_image_new()</a>, <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00111">lms_db_playlist_new()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00124">lms_db_video_new()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="296c81e4c64be1c7935ef31038aeb2c0"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_cache_del" ref="296c81e4c64be1c7935ef31038aeb2c0" args="(struct lms_db_cache *cache, const sqlite3 *db, void *data)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_cache_del           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *&nbsp;</td>
+          <td class="paramname"> <em>cache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&nbsp;</td>
+          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00437">437</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__private_8h-source.html#l00059">lms_db_cache_entry::data</a>, <a class="el" href="lightmediascanner__db__private_8h-source.html#l00064">lms_db_cache::entries</a>, and <a class="el" href="lightmediascanner__db__private_8h-source.html#l00063">lms_db_cache::size</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00402">lms_db_audio_free()</a>, <a class="el" href="lightmediascanner__db__image_8c-source.html#l00193">lms_db_image_free()</a>, <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00185">lms_db_playlist_free()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00197">lms_db_video_free()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="e7a672fa5760bae1a669c737648fe7d3"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_cache_get" ref="e7a672fa5760bae1a669c737648fe7d3" args="(struct lms_db_cache *cache, const sqlite3 *db, void **pdata)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_cache_get           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *&nbsp;</td>
+          <td class="paramname"> <em>cache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>pdata</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00462">462</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__private_8h-source.html#l00059">lms_db_cache_entry::data</a>, and <a class="el" href="lightmediascanner__db__private_8h-source.html#l00064">lms_db_cache::entries</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00297">lms_db_audio_new()</a>, <a class="el" href="lightmediascanner__db__image_8c-source.html#l00117">lms_db_image_new()</a>, <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00111">lms_db_playlist_new()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00124">lms_db_video_new()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="5fddf47521f83929b0c90a481fa01c5b"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt" ref="5fddf47521f83929b0c90a481fa01c5b" args="(sqlite3 *db, const char *sql)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>sql</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">101</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00028">sqlite3_prepare_v2()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00341">lms_db_audio_start()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00526">lms_db_compile_stmt_begin_transaction()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00711">lms_db_compile_stmt_delete_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00553">lms_db_compile_stmt_end_transaction()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00580">lms_db_compile_stmt_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00776">lms_db_compile_stmt_get_files()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00666">lms_db_compile_stmt_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00741">lms_db_compile_stmt_set_file_dtime()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00622">lms_db_compile_stmt_update_file_info()</a>, <a class="el" href="lightmediascanner__db__image_8c-source.html#l00161">lms_db_image_start()</a>, <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00155">lms_db_playlist_start()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00270">lms_db_table_version_get()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00168">lms_db_video_start()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="1787fdaf148358c7a518e91dfd871ca1"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt_begin_transaction" ref="1787fdaf148358c7a518e91dfd871ca1" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_begin_transaction           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00526">526</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="559925f8e4d5bf61d1bcf44844a95699"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt_delete_file_info" ref="559925f8e4d5bf61d1bcf44844a95699" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_delete_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00711">711</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="bff1aa6077215f3d70d4d5b1a9b7a498"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt_end_transaction" ref="bff1aa6077215f3d70d4d5b1a9b7a498" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_end_transaction           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00553">553</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="b00a624bc01da9b796f7bc6e1d507cf8"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt_get_file_info" ref="b00a624bc01da9b796f7bc6e1d507cf8" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_get_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00580">580</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="73ae2cfd7babf80294cf31f02906223b"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt_get_files" ref="73ae2cfd7babf80294cf31f02906223b" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_get_files           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00776">776</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="9a5886e755eb428ac811956144eee0dc"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt_insert_file_info" ref="9a5886e755eb428ac811956144eee0dc" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_insert_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00666">666</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="1b6950ca9e548670a4cb7fd0ec5220a8"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt_set_file_dtime" ref="1b6950ca9e548670a4cb7fd0ec5220a8" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_set_file_dtime           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00741">741</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="1e6e76cfa9d6faa3c3b8035004eff1a0"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt_update_file_info" ref="1e6e76cfa9d6faa3c3b8035004eff1a0" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_update_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00622">622</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="3798a46baaedc4d466879865456acc94"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_create_core_tables_if_required" ref="3798a46baaedc4d466879865456acc94" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_create_core_tables_if_required           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00475">475</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="822cae681398710b63c9af149fdacedb"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_create_trigger_if_not_exists" ref="822cae681398710b63c9af149fdacedb" args="(sqlite3 *db, const char *sql)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_create_trigger_if_not_exists           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>sql</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00055">55</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="bb2a9cdbbc7680d1ec85ef3f086b3f63"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_delete_file_info" ref="bb2a9cdbbc7680d1ec85ef3f086b3f63" args="(sqlite3_stmt *stmt, const struct lms_file_info *finfo)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_delete_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00717">717</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00149">lms_file_info::id</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00191">lms_db_bind_int64()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">lms_db_reset_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="ffa877e4fa751f090e7af8c2025d245c"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_end_transaction" ref="ffa877e4fa751f090e7af8c2025d245c" args="(sqlite3_stmt *stmt)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_end_transaction           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00559">559</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01047">lms_process_single_process()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="32110a4825e598ca6df329f55b0b62b5"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_finalize_stmt" ref="32110a4825e598ca6df329f55b0b62b5" args="(sqlite3_stmt *stmt, const char *name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_finalize_stmt           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00113">113</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00402">lms_db_audio_free()</a>, <a class="el" href="lightmediascanner__db__image_8c-source.html#l00193">lms_db_image_free()</a>, <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00185">lms_db_playlist_free()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00270">lms_db_table_version_get()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00197">lms_db_video_free()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="c0b7cf0b2eb0f55fbf8a4103bc9569d1"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_get_file_info" ref="c0b7cf0b2eb0f55fbf8a4103bc9569d1" args="(sqlite3_stmt *stmt, struct lms_file_info *finfo)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_get_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">587</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00151">lms_file_info::dtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00149">lms_file_info::id</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00168">lms_db_bind_blob()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">lms_db_reset_stmt()</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00150">lms_file_info::mtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00146">lms_file_info::path</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00147">lms_file_info::path_len</a>, and <a class="el" href="lightmediascanner__plugin_8h-source.html#l00152">lms_file_info::size</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="df572e74e0821a66ebd16f575b4fb7c4"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_get_files" ref="df572e74e0821a66ebd16f575b4fb7c4" args="(sqlite3_stmt *stmt, const char *path, int len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_get_files           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>path</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00783">783</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00168">lms_db_bind_blob()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="e529ad5c4478d53685c65ec69dc5b1f4"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_insert_file_info" ref="e529ad5c4478d53685c65ec69dc5b1f4" args="(sqlite3_stmt *stmt, struct lms_file_info *finfo)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_insert_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">673</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00151">lms_file_info::dtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00149">lms_file_info::id</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00168">lms_db_bind_blob()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00232">lms_db_bind_int()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">lms_db_reset_stmt()</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00150">lms_file_info::mtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00146">lms_file_info::path</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00147">lms_file_info::path_len</a>, and <a class="el" href="lightmediascanner__plugin_8h-source.html#l00152">lms_file_info::size</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="226c6f7ab2e7923b747b7090357ea419"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_reset_stmt" ref="226c6f7ab2e7923b747b7090357ea419" args="(sqlite3_stmt *stmt)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_reset_stmt           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">128</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00036">sqlite3_clear_bindings()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00717">lms_db_delete_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">lms_db_set_file_dtime()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00270">lms_db_table_version_get()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">lms_db_update_file_info()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="024e3bd9385fd740f75618716c90b04f"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_set_file_dtime" ref="024e3bd9385fd740f75618716c90b04f" args="(sqlite3_stmt *stmt, const struct lms_file_info *finfo)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_set_file_dtime           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">747</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00151">lms_file_info::dtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00149">lms_file_info::id</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00232">lms_db_bind_int()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00191">lms_db_bind_int64()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">lms_db_reset_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="9bca88ae79959baff3accee8ce10b558"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_table_update" ref="9bca88ae79959baff3accee8ce10b558" args="(sqlite3 *db, const char *table, unsigned int current_version, unsigned int last_version, const lms_db_table_updater_t *updaters)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_table_update           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>current_version</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>last_version</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>updaters</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00337">337</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00367">lms_db_table_update_if_required()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="86b766535f9dc7895da7d0f606201700"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_table_update_if_required" ref="86b766535f9dc7895da7d0f606201700" args="(sqlite3 *db, const char *table, unsigned int last_version, lms_db_table_updater_t *updaters)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_table_update_if_required           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>last_version</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>updaters</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00367">367</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00337">lms_db_table_update()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00270">lms_db_table_version_get()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="eba3215ee5981a73e9d0fed0a7e079cd"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_table_version_get" ref="eba3215ee5981a73e9d0fed0a7e079cd" args="(sqlite3 *db, const char *table)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_table_version_get           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>table</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00270">270</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00145">lms_db_bind_text()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00113">lms_db_finalize_stmt()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">lms_db_reset_stmt()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00367">lms_db_table_update_if_required()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="46e6e318ea9bb4a7ffdfe40c842da4e7"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_table_version_set" ref="46e6e318ea9bb4a7ffdfe40c842da4e7" args="(sqlite3 *db, const char *table, unsigned int version)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_table_version_set           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>version</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">304</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00232">lms_db_bind_int()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00145">lms_db_bind_text()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00113">lms_db_finalize_stmt()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">lms_db_reset_stmt()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00337">lms_db_table_update()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="0f727cd41bbb90af2e08b3ee7ca76de9"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_update_file_info" ref="0f727cd41bbb90af2e08b3ee7ca76de9" args="(sqlite3_stmt *stmt, const struct lms_file_info *finfo)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_update_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">629</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00151">lms_file_info::dtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00149">lms_file_info::id</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00232">lms_db_bind_int()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">lms_db_reset_stmt()</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00150">lms_file_info::mtime</a>, and <a class="el" href="lightmediascanner__plugin_8h-source.html#l00152">lms_file_info::size</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="3f8fb8f31c1876b3579956b3d898cd00"></a><!-- doxytag: member="lightmediascanner_db_common.c::sqlite3_clear_bindings" ref="3f8fb8f31c1876b3579956b3d898cd00" args="(sqlite3_stmt *stmt)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int sqlite3_clear_bindings           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00036">36</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">lms_db_reset_stmt()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="21da1a6588f354b758211583559ae405"></a><!-- doxytag: member="lightmediascanner_db_common.c::sqlite3_prepare_v2" ref="21da1a6588f354b758211583559ae405" args="(sqlite3 *db, const char *sql, int len, sqlite3_stmt **stmt, const char **tail)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int sqlite3_prepare_v2           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>sql</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>len</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3_stmt **&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char **&nbsp;</td>
+          <td class="paramname"> <em>tail</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copyright (C) 2007 by INdT<p>
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00028">28</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.dot b/www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.dot
new file mode 100644 (file)
index 0000000..15557d0
--- /dev/null
@@ -0,0 +1,16 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_set_file_dtime",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_bind_int",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_bind_int64",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lms_db_reset_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="sqlite3_clear_bindings",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.md5
new file mode 100644 (file)
index 0000000..560cf70
--- /dev/null
@@ -0,0 +1 @@
+95892a1d8fb1e89fb1d982f7f74da232
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.dot b/www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.dot
new file mode 100644 (file)
index 0000000..72f0034
--- /dev/null
@@ -0,0 +1,14 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_update_file_info",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_bind_int",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_reset_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="sqlite3_clear_bindings",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.md5
new file mode 100644 (file)
index 0000000..f851528
--- /dev/null
@@ -0,0 +1 @@
+182d5b4e72286a72c1d78b5f3b5ecffd
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.dot b/www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.dot
new file mode 100644 (file)
index 0000000..7df1b94
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_compile_stmt_begin_transaction",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.md5
new file mode 100644 (file)
index 0000000..cf668af
--- /dev/null
@@ -0,0 +1 @@
+13e738f4464a76bd8c9e28877a6e1e3c
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.dot b/www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.dot
new file mode 100644 (file)
index 0000000..0680393
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_compile_stmt_set_file_dtime",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.md5
new file mode 100644 (file)
index 0000000..fedc6c8
--- /dev/null
@@ -0,0 +1 @@
+b0290321179ccfdf6b868a1401368d8d
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.dot b/www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.dot
new file mode 100644 (file)
index 0000000..06793b5
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_compile_stmt_update_file_info",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.md5
new file mode 100644 (file)
index 0000000..8f21f90
--- /dev/null
@@ -0,0 +1 @@
+6d39a7d391eabe504c0839a7bef2900c
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.dot b/www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.dot
new file mode 100644 (file)
index 0000000..351b74b
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_reset_stmt",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="sqlite3_clear_bindings",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.md5
new file mode 100644 (file)
index 0000000..5e3f228
--- /dev/null
@@ -0,0 +1 @@
+62f0680e416b51bf8b87f43cae646e3a
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.dot b/www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.dot
new file mode 100644 (file)
index 0000000..e655d36
--- /dev/null
@@ -0,0 +1,22 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_table_version_set",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_bind_int",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_bind_text",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+  Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="lms_db_finalize_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5"];
+  Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="lms_db_reset_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419"];
+  Node7 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="sqlite3_clear_bindings",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.md5
new file mode 100644 (file)
index 0000000..d8fb9d8
--- /dev/null
@@ -0,0 +1 @@
+6782cd3f8c47ab0324aae402f15cc92e
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.dot b/www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.dot
new file mode 100644 (file)
index 0000000..cbc9539
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_compile_stmt_delete_file_info",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.md5
new file mode 100644 (file)
index 0000000..f10c3f1
--- /dev/null
@@ -0,0 +1 @@
+828ab82b5d7649c83e6458a1e260c2a8
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.dot b/www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.dot
new file mode 100644 (file)
index 0000000..d8f3ab3
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.md5
new file mode 100644 (file)
index 0000000..cb8fb38
--- /dev/null
@@ -0,0 +1 @@
+f1e39ac10262ba4204b000fbfd7c86af
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.dot b/www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.dot
new file mode 100644 (file)
index 0000000..be42de1
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_compile_stmt_get_files",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.md5
new file mode 100644 (file)
index 0000000..90eeb5f
--- /dev/null
@@ -0,0 +1 @@
+80941c09f55fa7c9f4866a3116b5da2b
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.dot b/www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.dot
new file mode 100644 (file)
index 0000000..7e9a458
--- /dev/null
@@ -0,0 +1,32 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_table_update_if_required",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_table_update",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_table_version_set",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lms_db_bind_int",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f"];
+  Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="lms_db_bind_text",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888"];
+  Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node6 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+  Node3 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="lms_db_finalize_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5"];
+  Node3 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="lms_db_reset_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419"];
+  Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="sqlite3_clear_bindings",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00"];
+  Node1 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="lms_db_table_version_get",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd"];
+  Node11 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.md5
new file mode 100644 (file)
index 0000000..ef8bd0d
--- /dev/null
@@ -0,0 +1 @@
+a127017f0d3d7ac779c410c933d392d7
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.dot b/www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.dot
new file mode 100644 (file)
index 0000000..e462eba
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_compile_stmt_insert_file_info",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.md5
new file mode 100644 (file)
index 0000000..33febad
--- /dev/null
@@ -0,0 +1 @@
+a16e0583ca842d2f781066f594511cbd
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.dot b/www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.dot
new file mode 100644 (file)
index 0000000..9cbcb6f
--- /dev/null
@@ -0,0 +1,24 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_table_update",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_table_version_set",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_bind_int",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f"];
+  Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lms_db_bind_text",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888"];
+  Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node5 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+  Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="lms_db_finalize_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5"];
+  Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="lms_db_reset_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419"];
+  Node8 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="sqlite3_clear_bindings",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.md5
new file mode 100644 (file)
index 0000000..56587c4
--- /dev/null
@@ -0,0 +1 @@
+3c1164fabd6ff495b98087cb95b52dfd
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c__incl.dot b/www/api/lightmediascanner__db__common_8c__incl.dot
new file mode 100644 (file)
index 0000000..b53b0de
--- /dev/null
@@ -0,0 +1,27 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_db_common.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lightmediascanner_db_private.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__private_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3.h",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="lightmediascanner_plugin.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__plugin_8h.html"];
+  Node5 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="lightmediascanner.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8h.html"];
+  Node5 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="lightmediascanner_charset_conv.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__charset__conv_8h.html"];
+  Node5 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="stdlib.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="stdio.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="string.h",height=0.2,width=0.4,color="grey75"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c__incl.md5 b/www/api/lightmediascanner__db__common_8c__incl.md5
new file mode 100644 (file)
index 0000000..c0118a5
--- /dev/null
@@ -0,0 +1 @@
+fefc1430ffcf4f13ec4b2d5aa46db105
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.dot b/www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.dot
new file mode 100644 (file)
index 0000000..2771c4c
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_compile_stmt_get_file_info",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.md5
new file mode 100644 (file)
index 0000000..77f12b4
--- /dev/null
@@ -0,0 +1 @@
+30a178024a3fa9cb54b3263f2f21a170
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.dot b/www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.dot
new file mode 100644 (file)
index 0000000..ea85c40
--- /dev/null
@@ -0,0 +1,14 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_delete_file_info",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_bind_int64",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_reset_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="sqlite3_clear_bindings",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.md5
new file mode 100644 (file)
index 0000000..1bbe888
--- /dev/null
@@ -0,0 +1 @@
+9269e3df30750ad4bb35aa819bd284d2
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.dot b/www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.dot
new file mode 100644 (file)
index 0000000..b64fcc8
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_compile_stmt_end_transaction",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.md5
new file mode 100644 (file)
index 0000000..b1b801b
--- /dev/null
@@ -0,0 +1 @@
+acd0d2b716dec99598ca58c2c146c8bf
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.dot b/www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.dot
new file mode 100644 (file)
index 0000000..0d9c316
--- /dev/null
@@ -0,0 +1,14 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_get_file_info",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_bind_blob",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_reset_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="sqlite3_clear_bindings",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.md5
new file mode 100644 (file)
index 0000000..46258a5
--- /dev/null
@@ -0,0 +1 @@
+abbd954359928e3ef6a5b53fc9ca0c60
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.dot b/www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.dot
new file mode 100644 (file)
index 0000000..206202c
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_get_files",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_bind_blob",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.md5
new file mode 100644 (file)
index 0000000..13b610f
--- /dev/null
@@ -0,0 +1 @@
+0ca971b6bc4fe5459c1131cc08a8ea24
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.dot b/www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.dot
new file mode 100644 (file)
index 0000000..0e15fd8
--- /dev/null
@@ -0,0 +1,16 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_insert_file_info",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_bind_blob",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_bind_int",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lms_db_reset_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="sqlite3_clear_bindings",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.md5
new file mode 100644 (file)
index 0000000..f18b27b
--- /dev/null
@@ -0,0 +1 @@
+b56933dddbd09826d9bbb6fe583a44af
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.dot b/www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.dot
new file mode 100644 (file)
index 0000000..ecf4a5c
--- /dev/null
@@ -0,0 +1,20 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_table_version_get",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_bind_text",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+  Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="lms_db_finalize_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5"];
+  Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="lms_db_reset_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419"];
+  Node6 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="sqlite3_clear_bindings",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00"];
+}
diff --git a/www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.md5
new file mode 100644 (file)
index 0000000..c13dfe5
--- /dev/null
@@ -0,0 +1 @@
+4242509a112bf7b4df9b15d6abf53124
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__image_8c-source.html b/www/api/lightmediascanner__db__image_8c-source.html
new file mode 100644 (file)
index 0000000..6ce0fd0
--- /dev/null
@@ -0,0 +1,263 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_db_image.c Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>src/lib/lightmediascanner_db_image.c</h1><a href="lightmediascanner__db__image_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 <span class="keyword">struct </span>lms_db_image {
+<a name="l00027"></a>00027     sqlite3 *db;
+<a name="l00028"></a>00028     sqlite3_stmt *insert;
+<a name="l00029"></a>00029     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _references;
+<a name="l00030"></a>00030     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _is_started:1;
+<a name="l00031"></a>00031 };
+<a name="l00032"></a>00032 
+<a name="l00033"></a>00033 <span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structlms__db__cache.html">lms_db_cache</a> _cache = {0, NULL};
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00036"></a>00036 _db_table_updater_images_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
+<a name="l00037"></a>00037     <span class="keywordtype">char</span> *errmsg;
+<a name="l00038"></a>00038     <span class="keywordtype">int</span> r, ret;
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040     errmsg = NULL;
+<a name="l00041"></a>00041     r = sqlite3_exec(db,
+<a name="l00042"></a>00042                      <span class="stringliteral">"CREATE TABLE IF NOT EXISTS images ("</span>
+<a name="l00043"></a>00043                      <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
+<a name="l00044"></a>00044                      <span class="stringliteral">"title TEXT, "</span>
+<a name="l00045"></a>00045                      <span class="stringliteral">"artist TEXT, "</span>
+<a name="l00046"></a>00046                      <span class="stringliteral">"date INTEGER NOT NULL, "</span>
+<a name="l00047"></a>00047                      <span class="stringliteral">"width INTEGER NOT NULL, "</span>
+<a name="l00048"></a>00048                      <span class="stringliteral">"height INTEGER NOT NULL, "</span>
+<a name="l00049"></a>00049                      <span class="stringliteral">"orientation INTEGER NOT NULL, "</span>
+<a name="l00050"></a>00050                      <span class="stringliteral">"gps_lat REAL DEFAULT 0.0, "</span>
+<a name="l00051"></a>00051                      <span class="stringliteral">"gps_long REAL DEFAULT 0.0, "</span>
+<a name="l00052"></a>00052                      <span class="stringliteral">"gps_alt REAL DEFAULT 0.0"</span>
+<a name="l00053"></a>00053                      <span class="stringliteral">")"</span>,
+<a name="l00054"></a>00054                      NULL, NULL, &amp;errmsg);
+<a name="l00055"></a>00055     <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00056"></a>00056         fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'images' table: %s\n"</span>, errmsg);
+<a name="l00057"></a>00057         sqlite3_free(errmsg);
+<a name="l00058"></a>00058         <span class="keywordflow">return</span> -1;
+<a name="l00059"></a>00059     }
+<a name="l00060"></a>00060 
+<a name="l00061"></a>00061     r = sqlite3_exec(db,
+<a name="l00062"></a>00062                      <span class="stringliteral">"CREATE INDEX IF NOT EXISTS images_date_idx ON images ("</span>
+<a name="l00063"></a>00063                      <span class="stringliteral">"date"</span>
+<a name="l00064"></a>00064                      <span class="stringliteral">")"</span>,
+<a name="l00065"></a>00065                      NULL, NULL, &amp;errmsg);
+<a name="l00066"></a>00066     <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00067"></a>00067         fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'images_date_idx' index: %s\n"</span>,
+<a name="l00068"></a>00068                 errmsg);
+<a name="l00069"></a>00069         sqlite3_free(errmsg);
+<a name="l00070"></a>00070         <span class="keywordflow">return</span> -2;
+<a name="l00071"></a>00071     }
+<a name="l00072"></a>00072 
+<a name="l00073"></a>00073     ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00074"></a>00074         <span class="stringliteral">"delete_images_on_files_deleted "</span>
+<a name="l00075"></a>00075         <span class="stringliteral">"DELETE ON files FOR EACH ROW BEGIN "</span>
+<a name="l00076"></a>00076         <span class="stringliteral">" DELETE FROM images WHERE id = OLD.id; END;"</span>);
+<a name="l00077"></a>00077     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00078"></a>00078         <span class="keywordflow">goto</span> done;
+<a name="l00079"></a>00079 
+<a name="l00080"></a>00080     ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00081"></a>00081         <span class="stringliteral">"delete_files_on_images_deleted "</span>
+<a name="l00082"></a>00082         <span class="stringliteral">"DELETE ON images FOR EACH ROW BEGIN "</span>
+<a name="l00083"></a>00083         <span class="stringliteral">" DELETE FROM files WHERE id = OLD.id; END;"</span>);
+<a name="l00084"></a>00084 
+<a name="l00085"></a>00085   done:
+<a name="l00086"></a>00086     <span class="keywordflow">return</span> ret;
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088 
+<a name="l00089"></a>00089 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> _db_table_updater_images[] = {
+<a name="l00090"></a>00090     _db_table_updater_images_0
+<a name="l00091"></a>00091 };
+<a name="l00092"></a>00092 
+<a name="l00093"></a>00093 
+<a name="l00094"></a>00094 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00095"></a>00095 _db_create_table_if_required(sqlite3 *db)
+<a name="l00096"></a>00096 {
+<a name="l00097"></a>00097     <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a>(db, <span class="stringliteral">"images"</span>,
+<a name="l00098"></a>00098          <a class="code" href="lightmediascanner__utils_8h.html#13a0622cfcc91eec261da4285621bdcc">LMS_ARRAY_SIZE</a>(_db_table_updater_images),
+<a name="l00099"></a>00099          _db_table_updater_images);
+<a name="l00100"></a>00100 }
+<a name="l00101"></a>00101 
+<a name="l00116"></a>00116 <a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *
+<a name="l00117"></a><a class="code" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">00117</a> <a class="code" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new</a>(sqlite3 *db)
+<a name="l00118"></a>00118 {
+<a name="l00119"></a>00119     <a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi;
+<a name="l00120"></a>00120     <span class="keywordtype">void</span> *p;
+<a name="l00121"></a>00121 
+<a name="l00122"></a>00122     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a>(&amp;_cache, db, &amp;p) == 0) {
+<a name="l00123"></a>00123         ldi = p;
+<a name="l00124"></a>00124         ldi-&gt;_references++;
+<a name="l00125"></a>00125         <span class="keywordflow">return</span> ldi;
+<a name="l00126"></a>00126     }
+<a name="l00127"></a>00127 
+<a name="l00128"></a>00128     <span class="keywordflow">if</span> (!db)
+<a name="l00129"></a>00129         <span class="keywordflow">return</span> NULL;
+<a name="l00130"></a>00130 
+<a name="l00131"></a>00131     <span class="keywordflow">if</span> (_db_create_table_if_required(db) != 0) {
+<a name="l00132"></a>00132         fprintf(stderr, <span class="stringliteral">"ERROR: could not create table.\n"</span>);
+<a name="l00133"></a>00133         <span class="keywordflow">return</span> NULL;
+<a name="l00134"></a>00134     }
+<a name="l00135"></a>00135 
+<a name="l00136"></a>00136     ldi = calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a>));
+<a name="l00137"></a>00137     ldi-&gt;_references = 1;
+<a name="l00138"></a>00138     ldi-&gt;db = db;
+<a name="l00139"></a>00139 
+<a name="l00140"></a>00140     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a>(&amp;_cache, db, ldi) != 0) {
+<a name="l00141"></a>00141         <a class="code" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lms_db_image_free</a>(ldi);
+<a name="l00142"></a>00142         <span class="keywordflow">return</span> NULL;
+<a name="l00143"></a>00143     }
+<a name="l00144"></a>00144 
+<a name="l00145"></a>00145     <span class="keywordflow">return</span> ldi;
+<a name="l00146"></a>00146 }
+<a name="l00147"></a>00147 
+<a name="l00160"></a>00160 <span class="keywordtype">int</span>
+<a name="l00161"></a><a class="code" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">00161</a> <a class="code" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lms_db_image_start</a>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi)
+<a name="l00162"></a>00162 {
+<a name="l00163"></a>00163     <span class="keywordflow">if</span> (!ldi)
+<a name="l00164"></a>00164         <span class="keywordflow">return</span> -1;
+<a name="l00165"></a>00165     <span class="keywordflow">if</span> (ldi-&gt;_is_started)
+<a name="l00166"></a>00166         <span class="keywordflow">return</span> 0;
+<a name="l00167"></a>00167 
+<a name="l00168"></a>00168     ldi-&gt;insert = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(ldi-&gt;db,
+<a name="l00169"></a>00169         <span class="stringliteral">"INSERT OR REPLACE INTO images ("</span>
+<a name="l00170"></a>00170         <span class="stringliteral">"id, title, artist, date, width, height, orientation, "</span>
+<a name="l00171"></a>00171         <span class="stringliteral">"gps_lat, gps_long, gps_alt) VALUES ("</span>
+<a name="l00172"></a>00172         <span class="stringliteral">"?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"</span>);
+<a name="l00173"></a>00173     <span class="keywordflow">if</span> (!ldi-&gt;insert)
+<a name="l00174"></a>00174         <span class="keywordflow">return</span> -2;
+<a name="l00175"></a>00175 
+<a name="l00176"></a>00176     ldi-&gt;_is_started = 1;
+<a name="l00177"></a>00177     <span class="keywordflow">return</span> 0;
+<a name="l00178"></a>00178 }
+<a name="l00179"></a>00179 
+<a name="l00192"></a>00192 <span class="keywordtype">int</span>
+<a name="l00193"></a><a class="code" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">00193</a> <a class="code" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lms_db_image_free</a>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi)
+<a name="l00194"></a>00194 {
+<a name="l00195"></a>00195     <span class="keywordtype">int</span> r;
+<a name="l00196"></a>00196 
+<a name="l00197"></a>00197     <span class="keywordflow">if</span> (!ldi)
+<a name="l00198"></a>00198         <span class="keywordflow">return</span> -1;
+<a name="l00199"></a>00199     <span class="keywordflow">if</span> (ldi-&gt;_references == 0) {
+<a name="l00200"></a>00200         fprintf(stderr, <span class="stringliteral">"ERROR: over-called lms_db_image_free(%p)\n"</span>, ldi);
+<a name="l00201"></a>00201         <span class="keywordflow">return</span> -1;
+<a name="l00202"></a>00202     }
+<a name="l00203"></a>00203 
+<a name="l00204"></a>00204     ldi-&gt;_references--;
+<a name="l00205"></a>00205     <span class="keywordflow">if</span> (ldi-&gt;_references &gt; 0)
+<a name="l00206"></a>00206         <span class="keywordflow">return</span> 0;
+<a name="l00207"></a>00207 
+<a name="l00208"></a>00208     <span class="keywordflow">if</span> (ldi-&gt;insert)
+<a name="l00209"></a>00209         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(ldi-&gt;insert, <span class="stringliteral">"insert"</span>);
+<a name="l00210"></a>00210 
+<a name="l00211"></a>00211     r = <a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a>(&amp;_cache, ldi-&gt;db, ldi);
+<a name="l00212"></a>00212     free(ldi);
+<a name="l00213"></a>00213 
+<a name="l00214"></a>00214     <span class="keywordflow">return</span> r;
+<a name="l00215"></a>00215 }
+<a name="l00216"></a>00216 
+<a name="l00217"></a>00217 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00218"></a>00218 _db_insert(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__image__info.html">lms_image_info</a> *info)
+<a name="l00219"></a>00219 {
+<a name="l00220"></a>00220     sqlite3_stmt *stmt;
+<a name="l00221"></a>00221     <span class="keywordtype">int</span> r, ret;
+<a name="l00222"></a>00222 
+<a name="l00223"></a>00223     stmt = ldi-&gt;insert;
+<a name="l00224"></a>00224 
+<a name="l00225"></a>00225     ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, info-&gt;<a class="code" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">id</a>);
+<a name="l00226"></a>00226     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00227"></a>00227         <span class="keywordflow">goto</span> done;
+<a name="l00228"></a>00228 
+<a name="l00229"></a>00229     ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 2, info-&gt;<a class="code" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">title</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-&gt;<a class="code" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">title</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00230"></a>00230     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00231"></a>00231         <span class="keywordflow">goto</span> done;
+<a name="l00232"></a>00232 
+<a name="l00233"></a>00233     ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 3, info-&gt;<a class="code" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">artist</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-&gt;<a class="code" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">artist</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00234"></a>00234     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00235"></a>00235         <span class="keywordflow">goto</span> done;
+<a name="l00236"></a>00236 
+<a name="l00237"></a>00237     ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 4, info-&gt;<a class="code" href="structlms__image__info.html#150973d3ac9f60f1b74f0a0d08c7f288">date</a>);
+<a name="l00238"></a>00238     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00239"></a>00239         <span class="keywordflow">goto</span> done;
+<a name="l00240"></a>00240 
+<a name="l00241"></a>00241     ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 5, info-&gt;<a class="code" href="structlms__image__info.html#fbd2df9f6f5f290ac02ce4d803677249">width</a>);
+<a name="l00242"></a>00242     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00243"></a>00243         <span class="keywordflow">goto</span> done;
+<a name="l00244"></a>00244 
+<a name="l00245"></a>00245     ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 6, info-&gt;<a class="code" href="structlms__image__info.html#f2ae81781dadf7ecaa307b3bc91e710e">height</a>);
+<a name="l00246"></a>00246     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00247"></a>00247         <span class="keywordflow">goto</span> done;
+<a name="l00248"></a>00248 
+<a name="l00249"></a>00249     ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 7, info-&gt;<a class="code" href="structlms__image__info.html#434330468b69d0f14b344c672d4778af">orientation</a>);
+<a name="l00250"></a>00250     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00251"></a>00251         <span class="keywordflow">goto</span> done;
+<a name="l00252"></a>00252 
+<a name="l00253"></a>00253     ret = <a class="code" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lms_db_bind_double</a>(stmt, 8, info-&gt;<a class="code" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">gps</a>.<a class="code" href="structlms__gps__info.html#70f152098accf3d46f18bc159e3b4359">latitude</a>);
+<a name="l00254"></a>00254     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00255"></a>00255         <span class="keywordflow">goto</span> done;
+<a name="l00256"></a>00256 
+<a name="l00257"></a>00257     ret = <a class="code" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lms_db_bind_double</a>(stmt, 9, info-&gt;<a class="code" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">gps</a>.<a class="code" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">longitude</a>);
+<a name="l00258"></a>00258     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00259"></a>00259         <span class="keywordflow">goto</span> done;
+<a name="l00260"></a>00260 
+<a name="l00261"></a>00261     ret = <a class="code" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lms_db_bind_double</a>(stmt, 10, info-&gt;<a class="code" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">gps</a>.<a class="code" href="structlms__gps__info.html#9b56b5dbae3e5c5722f7331c2bcbd520">altitude</a>);
+<a name="l00262"></a>00262     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00263"></a>00263         <span class="keywordflow">goto</span> done;
+<a name="l00264"></a>00264 
+<a name="l00265"></a>00265     r = sqlite3_step(stmt);
+<a name="l00266"></a>00266     <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00267"></a>00267         fprintf(stderr, <span class="stringliteral">"ERROR: could not insert image info: %s\n"</span>,
+<a name="l00268"></a>00268                 sqlite3_errmsg(ldi-&gt;db));
+<a name="l00269"></a>00269         ret = -11;
+<a name="l00270"></a>00270         <span class="keywordflow">goto</span> done;
+<a name="l00271"></a>00271     }
+<a name="l00272"></a>00272 
+<a name="l00273"></a>00273     ret = 0;
+<a name="l00274"></a>00274 
+<a name="l00275"></a>00275   done:
+<a name="l00276"></a>00276     <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00277"></a>00277 
+<a name="l00278"></a>00278     <span class="keywordflow">return</span> ret;
+<a name="l00279"></a>00279 }
+<a name="l00280"></a>00280 
+<a name="l00292"></a>00292 <span class="keywordtype">int</span>
+<a name="l00293"></a><a class="code" href="lightmediascanner__db__image_8c.html#f23fcc3d62a0f6592e14eaf1dc9b5833">00293</a> <a class="code" href="group__LMS__DB.html#gbf78dd3b90caa31e8901369211501200">lms_db_image_add</a>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi, <span class="keyword">struct</span> <a class="code" href="structlms__image__info.html">lms_image_info</a> *info)
+<a name="l00294"></a>00294 {
+<a name="l00295"></a>00295     <span class="keywordflow">if</span> (!ldi)
+<a name="l00296"></a>00296         <span class="keywordflow">return</span> -1;
+<a name="l00297"></a>00297     <span class="keywordflow">if</span> (!info)
+<a name="l00298"></a>00298         <span class="keywordflow">return</span> -2;
+<a name="l00299"></a>00299     <span class="keywordflow">if</span> (info-&gt;<a class="code" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">id</a> &lt; 1)
+<a name="l00300"></a>00300         <span class="keywordflow">return</span> -3;
+<a name="l00301"></a>00301 
+<a name="l00302"></a>00302     <span class="keywordflow">return</span> _db_insert(ldi, info);
+<a name="l00303"></a>00303 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__image_8c.html b/www/api/lightmediascanner__db__image_8c.html
new file mode 100644 (file)
index 0000000..60853af
--- /dev/null
@@ -0,0 +1,97 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_db_image.c File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>src/lib/lightmediascanner_db_image.c File Reference</h1><code>#include &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&quot;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</code><br>
+
+<p>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_db_image.c:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<a href="lightmediascanner__db__image_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lms_db_image_start</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lms_db_image_free</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__image_8c.html#f23fcc3d62a0f6592e14eaf1dc9b5833">lms_db_image_add</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi, struct <a class="el" href="structlms__image__info.html">lms_image_info</a> *info)</td></tr>
+
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="f23fcc3d62a0f6592e14eaf1dc9b5833"></a><!-- doxytag: member="lightmediascanner_db_image.c::lms_db_image_add" ref="f23fcc3d62a0f6592e14eaf1dc9b5833" args="(lms_db_image_t *ldi, struct lms_image_info *info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_image_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldi</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__image__info.html">lms_image_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add image file to DB.<p>
+This is usually called from plugin's <b>parse()</b> callback.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>ldi</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>info</em>&nbsp;</td><td>image information to store.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__image_8c-source.html#l00293">293</a> of file <a class="el" href="lightmediascanner__db__image_8c-source.html">lightmediascanner_db_image.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db_8h-source.html#l00068">lms_image_info::id</a>.</p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__image_8c__incl.dot b/www/api/lightmediascanner__db__image_8c__incl.dot
new file mode 100644 (file)
index 0000000..b3b9adb
--- /dev/null
@@ -0,0 +1,30 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_db_image.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lightmediascanner_db.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lightmediascanner_plugin.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__plugin_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lightmediascanner.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8h.html"];
+  Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="lightmediascanner_charset_conv.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__charset__conv_8h.html"];
+  Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="sqlite3.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="lightmediascanner_utils.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__utils_8h.html"];
+  Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="lightmediascanner_db_private.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__private_8h.html"];
+  Node9 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="stdlib.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="stdio.h",height=0.2,width=0.4,color="grey75"];
+}
diff --git a/www/api/lightmediascanner__db__image_8c__incl.md5 b/www/api/lightmediascanner__db__image_8c__incl.md5
new file mode 100644 (file)
index 0000000..b97077e
--- /dev/null
@@ -0,0 +1 @@
+0604db1ab18bf73d3cb9e5f77b9d86e4
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__playlist_8c-source.html b/www/api/lightmediascanner__db__playlist_8c-source.html
new file mode 100644 (file)
index 0000000..19d4d05
--- /dev/null
@@ -0,0 +1,227 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_db_playlist.c Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>src/lib/lightmediascanner_db_playlist.c</h1><a href="lightmediascanner__db__playlist_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 <span class="keyword">struct </span>lms_db_playlist {
+<a name="l00027"></a>00027     sqlite3 *db;
+<a name="l00028"></a>00028     sqlite3_stmt *insert;
+<a name="l00029"></a>00029     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _references;
+<a name="l00030"></a>00030     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _is_started:1;
+<a name="l00031"></a>00031 };
+<a name="l00032"></a>00032 
+<a name="l00033"></a>00033 <span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structlms__db__cache.html">lms_db_cache</a> _cache = {0, NULL};
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00036"></a>00036 _db_table_updater_playlists_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
+<a name="l00037"></a>00037     <span class="keywordtype">char</span> *errmsg;
+<a name="l00038"></a>00038     <span class="keywordtype">int</span> r, ret;
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040     errmsg = NULL;
+<a name="l00041"></a>00041     r = sqlite3_exec(db,
+<a name="l00042"></a>00042                      <span class="stringliteral">"CREATE TABLE IF NOT EXISTS playlists ("</span>
+<a name="l00043"></a>00043                      <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
+<a name="l00044"></a>00044                      <span class="stringliteral">"title TEXT, "</span>
+<a name="l00045"></a>00045                      <span class="stringliteral">"n_entries INTEGER NOT NULL"</span>
+<a name="l00046"></a>00046                      <span class="stringliteral">")"</span>,
+<a name="l00047"></a>00047                      NULL, NULL, &amp;errmsg);
+<a name="l00048"></a>00048     <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00049"></a>00049         fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'playlists' table: %s\n"</span>,
+<a name="l00050"></a>00050                 errmsg);
+<a name="l00051"></a>00051         sqlite3_free(errmsg);
+<a name="l00052"></a>00052         <span class="keywordflow">return</span> -1;
+<a name="l00053"></a>00053     }
+<a name="l00054"></a>00054 
+<a name="l00055"></a>00055     r = sqlite3_exec(db,
+<a name="l00056"></a>00056                      <span class="stringliteral">"CREATE INDEX IF NOT EXISTS playlists_title_idx ON "</span>
+<a name="l00057"></a>00057                      <span class="stringliteral">"playlists (title)"</span>,
+<a name="l00058"></a>00058                      NULL, NULL, &amp;errmsg);
+<a name="l00059"></a>00059     <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00060"></a>00060         fprintf(stderr,
+<a name="l00061"></a>00061                 <span class="stringliteral">"ERROR: could not create 'playlists_title_idx' index: %s\n"</span>,
+<a name="l00062"></a>00062                 errmsg);
+<a name="l00063"></a>00063         sqlite3_free(errmsg);
+<a name="l00064"></a>00064         <span class="keywordflow">return</span> -2;
+<a name="l00065"></a>00065     }
+<a name="l00066"></a>00066 
+<a name="l00067"></a>00067     ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00068"></a>00068         <span class="stringliteral">"delete_playlists_on_files_deleted "</span>
+<a name="l00069"></a>00069         <span class="stringliteral">"DELETE ON files FOR EACH ROW BEGIN "</span>
+<a name="l00070"></a>00070         <span class="stringliteral">" DELETE FROM playlists WHERE id = OLD.id; END;"</span>);
+<a name="l00071"></a>00071     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00072"></a>00072         <span class="keywordflow">goto</span> done;
+<a name="l00073"></a>00073 
+<a name="l00074"></a>00074     ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00075"></a>00075         <span class="stringliteral">"delete_files_on_playlists_deleted "</span>
+<a name="l00076"></a>00076         <span class="stringliteral">"DELETE ON playlists FOR EACH ROW BEGIN "</span>
+<a name="l00077"></a>00077         <span class="stringliteral">" DELETE FROM files WHERE id = OLD.id; END;"</span>);
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079   done:
+<a name="l00080"></a>00080     <span class="keywordflow">return</span> ret;
+<a name="l00081"></a>00081 }
+<a name="l00082"></a>00082 
+<a name="l00083"></a>00083 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> _db_table_updater_playlists[] = {
+<a name="l00084"></a>00084     _db_table_updater_playlists_0
+<a name="l00085"></a>00085 };
+<a name="l00086"></a>00086 
+<a name="l00087"></a>00087 
+<a name="l00088"></a>00088 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00089"></a>00089 _db_create_table_if_required(sqlite3 *db)
+<a name="l00090"></a>00090 {
+<a name="l00091"></a>00091     <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a>(db, <span class="stringliteral">"playlists"</span>,
+<a name="l00092"></a>00092          <a class="code" href="lightmediascanner__utils_8h.html#13a0622cfcc91eec261da4285621bdcc">LMS_ARRAY_SIZE</a>(_db_table_updater_playlists),
+<a name="l00093"></a>00093          _db_table_updater_playlists);
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095 
+<a name="l00110"></a>00110 <a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *
+<a name="l00111"></a><a class="code" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">00111</a> <a class="code" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new</a>(sqlite3 *db)
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113     <a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp;
+<a name="l00114"></a>00114     <span class="keywordtype">void</span> *p;
+<a name="l00115"></a>00115 
+<a name="l00116"></a>00116     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a>(&amp;_cache, db, &amp;p) == 0) {
+<a name="l00117"></a>00117         ldp = p;
+<a name="l00118"></a>00118         ldp-&gt;_references++;
+<a name="l00119"></a>00119         <span class="keywordflow">return</span> ldp;
+<a name="l00120"></a>00120     }
+<a name="l00121"></a>00121 
+<a name="l00122"></a>00122     <span class="keywordflow">if</span> (!db)
+<a name="l00123"></a>00123         <span class="keywordflow">return</span> NULL;
+<a name="l00124"></a>00124 
+<a name="l00125"></a>00125     <span class="keywordflow">if</span> (_db_create_table_if_required(db) != 0) {
+<a name="l00126"></a>00126         fprintf(stderr, <span class="stringliteral">"ERROR: could not create table.\n"</span>);
+<a name="l00127"></a>00127         <span class="keywordflow">return</span> NULL;
+<a name="l00128"></a>00128     }
+<a name="l00129"></a>00129 
+<a name="l00130"></a>00130     ldp = calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a>));
+<a name="l00131"></a>00131     ldp-&gt;_references = 1;
+<a name="l00132"></a>00132     ldp-&gt;db = db;
+<a name="l00133"></a>00133 
+<a name="l00134"></a>00134     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a>(&amp;_cache, db, ldp) != 0) {
+<a name="l00135"></a>00135         <a class="code" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lms_db_playlist_free</a>(ldp);
+<a name="l00136"></a>00136         <span class="keywordflow">return</span> NULL;
+<a name="l00137"></a>00137     }
+<a name="l00138"></a>00138 
+<a name="l00139"></a>00139     <span class="keywordflow">return</span> ldp;
+<a name="l00140"></a>00140 }
+<a name="l00141"></a>00141 
+<a name="l00154"></a>00154 <span class="keywordtype">int</span>
+<a name="l00155"></a><a class="code" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">00155</a> <a class="code" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lms_db_playlist_start</a>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp)
+<a name="l00156"></a>00156 {
+<a name="l00157"></a>00157     <span class="keywordflow">if</span> (!ldp)
+<a name="l00158"></a>00158         <span class="keywordflow">return</span> -1;
+<a name="l00159"></a>00159     <span class="keywordflow">if</span> (ldp-&gt;_is_started)
+<a name="l00160"></a>00160         <span class="keywordflow">return</span> 0;
+<a name="l00161"></a>00161 
+<a name="l00162"></a>00162     ldp-&gt;insert = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(ldp-&gt;db,
+<a name="l00163"></a>00163         <span class="stringliteral">"INSERT OR REPLACE INTO playlists (id, title, n_entries) "</span>
+<a name="l00164"></a>00164         <span class="stringliteral">"VALUES (?, ?, ?)"</span>);
+<a name="l00165"></a>00165     <span class="keywordflow">if</span> (!ldp-&gt;insert)
+<a name="l00166"></a>00166         <span class="keywordflow">return</span> -2;
+<a name="l00167"></a>00167 
+<a name="l00168"></a>00168     ldp-&gt;_is_started = 1;
+<a name="l00169"></a>00169     <span class="keywordflow">return</span> 0;
+<a name="l00170"></a>00170 }
+<a name="l00171"></a>00171 
+<a name="l00184"></a>00184 <span class="keywordtype">int</span>
+<a name="l00185"></a><a class="code" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">00185</a> <a class="code" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lms_db_playlist_free</a>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp)
+<a name="l00186"></a>00186 {
+<a name="l00187"></a>00187     <span class="keywordtype">int</span> r;
+<a name="l00188"></a>00188 
+<a name="l00189"></a>00189     <span class="keywordflow">if</span> (!ldp)
+<a name="l00190"></a>00190         <span class="keywordflow">return</span> -1;
+<a name="l00191"></a>00191     <span class="keywordflow">if</span> (ldp-&gt;_references == 0) {
+<a name="l00192"></a>00192         fprintf(stderr, <span class="stringliteral">"ERROR: over-called lms_db_playlist_free(%p)\n"</span>, ldp);
+<a name="l00193"></a>00193         <span class="keywordflow">return</span> -1;
+<a name="l00194"></a>00194     }
+<a name="l00195"></a>00195 
+<a name="l00196"></a>00196     ldp-&gt;_references--;
+<a name="l00197"></a>00197     <span class="keywordflow">if</span> (ldp-&gt;_references &gt; 0)
+<a name="l00198"></a>00198         <span class="keywordflow">return</span> 0;
+<a name="l00199"></a>00199 
+<a name="l00200"></a>00200     <span class="keywordflow">if</span> (ldp-&gt;insert)
+<a name="l00201"></a>00201         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(ldp-&gt;insert, <span class="stringliteral">"insert"</span>);
+<a name="l00202"></a>00202 
+<a name="l00203"></a>00203     r = <a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a>(&amp;_cache, ldp-&gt;db, ldp);
+<a name="l00204"></a>00204     free(ldp);
+<a name="l00205"></a>00205 
+<a name="l00206"></a>00206     <span class="keywordflow">return</span> r;
+<a name="l00207"></a>00207 }
+<a name="l00208"></a>00208 
+<a name="l00209"></a>00209 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00210"></a>00210 _db_insert(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__playlist__info.html">lms_playlist_info</a> *info)
+<a name="l00211"></a>00211 {
+<a name="l00212"></a>00212     sqlite3_stmt *stmt;
+<a name="l00213"></a>00213     <span class="keywordtype">int</span> r, ret;
+<a name="l00214"></a>00214 
+<a name="l00215"></a>00215     stmt = ldp-&gt;insert;
+<a name="l00216"></a>00216 
+<a name="l00217"></a>00217     ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, info-&gt;<a class="code" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">id</a>);
+<a name="l00218"></a>00218     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00219"></a>00219         <span class="keywordflow">goto</span> done;
+<a name="l00220"></a>00220 
+<a name="l00221"></a>00221     ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 2, info-&gt;<a class="code" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">title</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-&gt;<a class="code" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">title</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00222"></a>00222     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00223"></a>00223         <span class="keywordflow">goto</span> done;
+<a name="l00224"></a>00224 
+<a name="l00225"></a>00225     ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 3, info-&gt;<a class="code" href="structlms__playlist__info.html#81cc52f5b6ce04cd64cf3884cb774663">n_entries</a>);
+<a name="l00226"></a>00226     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00227"></a>00227         <span class="keywordflow">goto</span> done;
+<a name="l00228"></a>00228 
+<a name="l00229"></a>00229     r = sqlite3_step(stmt);
+<a name="l00230"></a>00230     <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00231"></a>00231         fprintf(stderr, <span class="stringliteral">"ERROR: could not insert playlist info: %s\n"</span>,
+<a name="l00232"></a>00232                 sqlite3_errmsg(ldp-&gt;db));
+<a name="l00233"></a>00233         ret = -4;
+<a name="l00234"></a>00234         <span class="keywordflow">goto</span> done;
+<a name="l00235"></a>00235     }
+<a name="l00236"></a>00236 
+<a name="l00237"></a>00237     ret = 0;
+<a name="l00238"></a>00238 
+<a name="l00239"></a>00239   done:
+<a name="l00240"></a>00240     <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00241"></a>00241 
+<a name="l00242"></a>00242     <span class="keywordflow">return</span> ret;
+<a name="l00243"></a>00243 }
+<a name="l00244"></a>00244 
+<a name="l00256"></a>00256 <span class="keywordtype">int</span>
+<a name="l00257"></a><a class="code" href="lightmediascanner__db__playlist_8c.html#4fe309efb9c2c24b6e2f77fffca81ee4">00257</a> <a class="code" href="group__LMS__DB.html#g8864e532609191f07737c1d23c1bc65f">lms_db_playlist_add</a>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp, <span class="keyword">struct</span> <a class="code" href="structlms__playlist__info.html">lms_playlist_info</a> *info)
+<a name="l00258"></a>00258 {
+<a name="l00259"></a>00259     <span class="keywordflow">if</span> (!ldp)
+<a name="l00260"></a>00260         <span class="keywordflow">return</span> -1;
+<a name="l00261"></a>00261     <span class="keywordflow">if</span> (!info)
+<a name="l00262"></a>00262         <span class="keywordflow">return</span> -2;
+<a name="l00263"></a>00263     <span class="keywordflow">if</span> (info-&gt;<a class="code" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">id</a> &lt; 1)
+<a name="l00264"></a>00264         <span class="keywordflow">return</span> -3;
+<a name="l00265"></a>00265 
+<a name="l00266"></a>00266     <span class="keywordflow">return</span> _db_insert(ldp, info);
+<a name="l00267"></a>00267 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__playlist_8c.html b/www/api/lightmediascanner__db__playlist_8c.html
new file mode 100644 (file)
index 0000000..9ce4293
--- /dev/null
@@ -0,0 +1,97 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_db_playlist.c File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>src/lib/lightmediascanner_db_playlist.c File Reference</h1><code>#include &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&quot;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</code><br>
+
+<p>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_db_playlist.c:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<a href="lightmediascanner__db__playlist_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lms_db_playlist_start</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lms_db_playlist_free</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__playlist_8c.html#4fe309efb9c2c24b6e2f77fffca81ee4">lms_db_playlist_add</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp, struct <a class="el" href="structlms__playlist__info.html">lms_playlist_info</a> *info)</td></tr>
+
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="4fe309efb9c2c24b6e2f77fffca81ee4"></a><!-- doxytag: member="lightmediascanner_db_playlist.c::lms_db_playlist_add" ref="4fe309efb9c2c24b6e2f77fffca81ee4" args="(lms_db_playlist_t *ldp, struct lms_playlist_info *info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_playlist_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldp</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__playlist__info.html">lms_playlist_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add playlist file to DB.<p>
+This is usually called from plugin's <b>parse()</b> callback.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>ldp</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>info</em>&nbsp;</td><td>playlist information to store.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00257">257</a> of file <a class="el" href="lightmediascanner__db__playlist_8c-source.html">lightmediascanner_db_playlist.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db_8h-source.html#l00120">lms_playlist_info::id</a>.</p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__playlist_8c__incl.dot b/www/api/lightmediascanner__db__playlist_8c__incl.dot
new file mode 100644 (file)
index 0000000..2067d44
--- /dev/null
@@ -0,0 +1,30 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_db_playlist.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lightmediascanner_db.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lightmediascanner_plugin.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__plugin_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lightmediascanner.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8h.html"];
+  Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="lightmediascanner_charset_conv.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__charset__conv_8h.html"];
+  Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="sqlite3.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="lightmediascanner_utils.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__utils_8h.html"];
+  Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="lightmediascanner_db_private.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__private_8h.html"];
+  Node9 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="stdlib.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="stdio.h",height=0.2,width=0.4,color="grey75"];
+}
diff --git a/www/api/lightmediascanner__db__playlist_8c__incl.md5 b/www/api/lightmediascanner__db__playlist_8c__incl.md5
new file mode 100644 (file)
index 0000000..37f5c6f
--- /dev/null
@@ -0,0 +1 @@
+a2f67a407b791f01ad94c4d48390ffb6
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h-source.html b/www/api/lightmediascanner__db__private_8h-source.html
new file mode 100644 (file)
index 0000000..8b20702
--- /dev/null
@@ -0,0 +1,102 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_db_private.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>src/lib/lightmediascanner_db_private.h</h1><a href="lightmediascanner__db__private_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef _LIGHTMEDIASCANNER_DB_PRIVATE_H_</span>
+<a name="l00022"></a><a class="code" href="lightmediascanner__db__private_8h.html#97d5ed207ef5b72f4fba0cab38594bb7">00022</a> <span class="preprocessor"></span><span class="preprocessor">#define _LIGHTMEDIASCANNER_DB_PRIVATE_H_ 1</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#ifdef __GNUC__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt; 3 || (__GNUC__ == 3 &amp;&amp; __GNUC_MINOR__ &gt;= 4)</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00031"></a><a class="code" href="lightmediascanner__db__private_8h.html#6fe68cac0abf3e2ca61141920414e93a">00031</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;sqlite3.h&gt;</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;sys/types.h&gt;</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__plugin_8h.html">lightmediascanner_plugin.h</a>"</span>
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038 sqlite3_stmt *<a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *sql) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00039"></a>00039 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keywordtype">char</span> *name) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00040"></a>00040 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(sqlite3_stmt *stmt) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00041"></a>00041 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, <span class="keyword">const</span> <span class="keywordtype">char</span> *text, <span class="keywordtype">int</span> len) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00042"></a>00042 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lms_db_bind_blob</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, <span class="keyword">const</span> <span class="keywordtype">void</span> *blob, <span class="keywordtype">int</span> len) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00043"></a>00043 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, int64_t value) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00044"></a>00044 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, int64_t *p_value) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00045"></a>00045 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, <span class="keywordtype">int</span> value) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00046"></a>00046 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lms_db_bind_double</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, <span class="keywordtype">double</span> value) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00047"></a>00047 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *sql) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00048"></a>00048 
+<a name="l00049"></a>00049 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd">lms_db_table_version_get</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00050"></a>00050 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">lms_db_table_version_set</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> version) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00051"></a>00051 
+<a name="l00052"></a>00052 <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a>)(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run);
+<a name="l00053"></a>00053 
+<a name="l00054"></a>00054 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">lms_db_table_update</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> last_version, <span class="keyword">const</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *updaters) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 5);
+<a name="l00055"></a>00055 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> last_version, <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *updaters) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 4);
+<a name="l00056"></a>00056 
+<a name="l00057"></a><a class="code" href="structlms__db__cache__entry.html">00057</a> <span class="keyword">struct </span><a class="code" href="structlms__db__cache__entry.html">lms_db_cache_entry</a> {
+<a name="l00058"></a><a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">00058</a>     <span class="keyword">const</span> sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>;
+<a name="l00059"></a><a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">00059</a>     <span class="keywordtype">void</span> *<a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>;
+<a name="l00060"></a>00060 };
+<a name="l00061"></a>00061 
+<a name="l00062"></a><a class="code" href="structlms__db__cache.html">00062</a> <span class="keyword">struct </span><a class="code" href="structlms__db__cache.html">lms_db_cache</a> {
+<a name="l00063"></a><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">00063</a>     <span class="keywordtype">int</span> <a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a>;
+<a name="l00064"></a><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">00064</a>     <span class="keyword">struct </span><a class="code" href="structlms__db__cache__entry.html">lms_db_cache_entry</a> *<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>;
+<a name="l00065"></a>00065 };
+<a name="l00066"></a>00066 
+<a name="l00067"></a>00067 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a>(<span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keyword">const</span> sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>, <span class="keywordtype">void</span> *<a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 3);
+<a name="l00068"></a>00068 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a>(<span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keyword">const</span> sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>, <span class="keywordtype">void</span> *<a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 3);
+<a name="l00069"></a>00069 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a>(<span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keyword">const</span> sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>, <span class="keywordtype">void</span> **pdata) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 3);
+<a name="l00070"></a>00070 
+<a name="l00071"></a>00071 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lms_db_create_core_tables_if_required</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00072"></a>00072 
+<a name="l00073"></a>00073 sqlite3_stmt *<a class="code" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lms_db_compile_stmt_begin_transaction</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00074"></a>00074 sqlite3_stmt *<a class="code" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lms_db_compile_stmt_end_transaction</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00075"></a>00075 sqlite3_stmt *<a class="code" href="lightmediascanner__db__common_8c.html#b00a624bc01da9b796f7bc6e1d507cf8">lms_db_compile_stmt_get_file_info</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00076"></a>00076 sqlite3_stmt *<a class="code" href="lightmediascanner__db__common_8c.html#9a5886e755eb428ac811956144eee0dc">lms_db_compile_stmt_insert_file_info</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00077"></a>00077 sqlite3_stmt *<a class="code" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lms_db_compile_stmt_update_file_info</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00078"></a>00078 sqlite3_stmt *<a class="code" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lms_db_compile_stmt_delete_file_info</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00079"></a>00079 sqlite3_stmt *<a class="code" href="lightmediascanner__db__common_8c.html#1b6950ca9e548670a4cb7fd0ec5220a8">lms_db_compile_stmt_set_file_dtime</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00080"></a>00080 sqlite3_stmt *<a class="code" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lms_db_compile_stmt_get_files</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(sqlite3_stmt *stmt) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00083"></a>00083 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(sqlite3_stmt *stmt) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00084"></a>00084 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lms_db_update_file_info</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00085"></a>00085 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#c0b7cf0b2eb0f55fbf8a4103bc9569d1">lms_db_get_file_info</a>(sqlite3_stmt *stmt, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00086"></a>00086 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#e529ad5c4478d53685c65ec69dc5b1f4">lms_db_insert_file_info</a>(sqlite3_stmt *stmt, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00087"></a>00087 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lms_db_delete_file_info</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00088"></a>00088 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">lms_db_set_file_dtime</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00089"></a>00089 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">lms_db_get_files</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> len) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00090"></a>00090 
+<a name="l00091"></a>00091 
+<a name="l00092"></a>00092 
+<a name="l00093"></a>00093 <span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_DB_PRIVATE_H_ */</span>
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__private_8h.html b/www/api/lightmediascanner__db__private_8h.html
new file mode 100644 (file)
index 0000000..967677d
--- /dev/null
@@ -0,0 +1,1302 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_db_private.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>src/lib/lightmediascanner_db_private.h File Reference</h1><code>#include &lt;sqlite3.h&gt;</code><br>
+<code>#include &lt;sys/types.h&gt;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>&quot;</code><br>
+
+<p>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_db_private.h:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<a href="lightmediascanner__db__private_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__db__cache__entry.html">lms_db_cache_entry</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__db__cache.html">lms_db_cache</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#97d5ed207ef5b72f4fba0cab38594bb7">_LIGHTMEDIASCANNER_DB_PRIVATE_H_</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(...)</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#6301bd096100f8adf24d2caff3aa0b75">lms_db_compile_stmt</a> (sqlite3 *db, const char *sql) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#2660f629fbdf3d4144a6143fee837a27">lms_db_finalize_stmt</a> (sqlite3_stmt *stmt, const char *name) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#ee78f418f0f3c9ead3023b1453c63556">lms_db_reset_stmt</a> (sqlite3_stmt *stmt) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#14d56e02624ad6130bc59ae9bb950ac3">lms_db_bind_text</a> (sqlite3_stmt *stmt, int col, const char *text, int len) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#7fd514b582578c18a25cdbf6c561243c">lms_db_bind_blob</a> (sqlite3_stmt *stmt, int col, const void *blob, int len) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#bbb18d7cc44f7e363c0f240849d72c31">lms_db_bind_int64</a> (sqlite3_stmt *stmt, int col, int64_t value) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#cd7006f0271b9a47937dc2d2ae5480fe">lms_db_bind_int64_or_null</a> (sqlite3_stmt *stmt, int col, int64_t *p_value) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#37815f859116b46089bea4ba84bb23d2">lms_db_bind_int</a> (sqlite3_stmt *stmt, int col, int value) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#9e78297037179998924354e73ca69349">lms_db_bind_double</a> (sqlite3_stmt *stmt, int col, double value) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#f47d604dd4e11f81be1ad045ee723789">lms_db_create_trigger_if_not_exists</a> (sqlite3 *db, const char *sql) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#23cf7fff49641b39c017bdd076b112a7">lms_db_table_version_get</a> (sqlite3 *db, const char *table) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#1c57f68c64069575a36252816929e335">lms_db_table_version_set</a> (sqlite3 *db, const char *table, unsigned int version) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#3dcf825514196befd0a4575e4afd0b58">lms_db_table_update</a> (sqlite3 *db, const char *table, unsigned int current_version, unsigned int last_version, const <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *updaters) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#455c0e5d62094b01fc935c5db8f07352">lms_db_table_update_if_required</a> (sqlite3 *db, const char *table, unsigned int last_version, <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *updaters) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#f2c9e9154fff8b335c4fd5693fe45aa6">lms_db_cache_add</a> (struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *cache, const sqlite3 *db, void *data) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#e3e18958c74ba988c2bfdf77a3793ceb">lms_db_cache_del</a> (struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *cache, const sqlite3 *db, void *data) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#ec1ff2c5b629374611336d56871a8c0b">lms_db_cache_get</a> (struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *cache, const sqlite3 *db, void **pdata) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#13ca09c885535a2968e707120e935268">lms_db_create_core_tables_if_required</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#073c254ca7b4d3f42e1be1854bcc42a3">lms_db_compile_stmt_begin_transaction</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#09feca4fbfde33d5647cdd5cc2de6500">lms_db_compile_stmt_end_transaction</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#327d54a6dac083e356fd609298a0cbd5">lms_db_compile_stmt_get_file_info</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#bf21f88ddbe28a8290d0df32af0f079c">lms_db_compile_stmt_insert_file_info</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#69eb9d9058d9432f7658f9adffb79ed6">lms_db_compile_stmt_update_file_info</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#76941bdbbdb711fff821343e91c2cd97">lms_db_compile_stmt_delete_file_info</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#08c34b5b1b6e927a696ff0ce66562f54">lms_db_compile_stmt_set_file_dtime</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#1cc8a80961a0febdd099a028f3da9c30">lms_db_compile_stmt_get_files</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#3a7256cb653542bbf563feeb2aa2d0ea">lms_db_begin_transaction</a> (sqlite3_stmt *stmt) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#8ee7bfba83958b80f717a6ccbad2a84c">lms_db_end_transaction</a> (sqlite3_stmt *stmt) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#9cce62321be32274de720ec946473eeb">lms_db_update_file_info</a> (sqlite3_stmt *stmt, const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#e1df123e8d894a49f740ec6429af8159">lms_db_get_file_info</a> (sqlite3_stmt *stmt, struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#9353bf3cfbe2c0045023658597b0cf1d">lms_db_insert_file_info</a> (sqlite3_stmt *stmt, struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#ec17baec1e001f67334b0265d465fb50">lms_db_delete_file_info</a> (sqlite3_stmt *stmt, const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#0fa3bfe1fa3a01a4dd231b6f818122cb">lms_db_set_file_dtime</a> (sqlite3_stmt *stmt, const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#617b14b976ba1cde9fe639800f2eae71">lms_db_get_files</a> (sqlite3_stmt *stmt, const char *path, int len) GNUC_NON_NULL(1</td></tr>
+
+<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> )(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run)</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="97d5ed207ef5b72f4fba0cab38594bb7"></a><!-- doxytag: member="lightmediascanner_db_private.h::_LIGHTMEDIASCANNER_DB_PRIVATE_H_" ref="97d5ed207ef5b72f4fba0cab38594bb7" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _LIGHTMEDIASCANNER_DB_PRIVATE_H_&nbsp;&nbsp;&nbsp;1          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copyright (C) 2007 by INdT<p>
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00022">22</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner_db_private.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_NON_NULL          </td>
+          <td>(</td>
+          <td class="paramtype"> <em>...</em>&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00031">31</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.</p>
+
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="3a7256cb653542bbf563feeb2aa2d0ea"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_begin_transaction" ref="3a7256cb653542bbf563feeb2aa2d0ea" args="(sqlite3_stmt *stmt) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_begin_transaction           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00532">532</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01047">lms_process_single_process()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="7fd514b582578c18a25cdbf6c561243c"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_bind_blob" ref="7fd514b582578c18a25cdbf6c561243c" args="(sqlite3_stmt *stmt, int col, const void *blob, int len) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_blob           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&nbsp;</td>
+          <td class="paramname"> <em>blob</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00168">168</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00783">lms_db_get_files()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="9e78297037179998924354e73ca69349"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_bind_double" ref="9e78297037179998924354e73ca69349" args="(sqlite3_stmt *stmt, int col, double value) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_double           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double&nbsp;</td>
+          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00251">251</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="37815f859116b46089bea4ba84bb23d2"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_bind_int" ref="37815f859116b46089bea4ba84bb23d2" args="(sqlite3_stmt *stmt, int col, int value) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_int           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00232">232</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">lms_db_set_file_dtime()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">lms_db_update_file_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="bbb18d7cc44f7e363c0f240849d72c31"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_bind_int64" ref="bbb18d7cc44f7e363c0f240849d72c31" args="(sqlite3_stmt *stmt, int col, int64_t value) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_int64           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int64_t&nbsp;</td>
+          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00191">191</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00717">lms_db_delete_file_info()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">lms_db_set_file_dtime()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="cd7006f0271b9a47937dc2d2ae5480fe"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_bind_int64_or_null" ref="cd7006f0271b9a47937dc2d2ae5480fe" args="(sqlite3_stmt *stmt, int col, int64_t *p_value) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_int64_or_null           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int64_t *&nbsp;</td>
+          <td class="paramname"> <em>p_value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00210">210</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="14d56e02624ad6130bc59ae9bb950ac3"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_bind_text" ref="14d56e02624ad6130bc59ae9bb950ac3" args="(sqlite3_stmt *stmt, int col, const char *text, int len) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_text           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>text</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00145">145</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00270">lms_db_table_version_get()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="f2c9e9154fff8b335c4fd5693fe45aa6"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_cache_add" ref="f2c9e9154fff8b335c4fd5693fe45aa6" args="(struct lms_db_cache *cache, const sqlite3 *db, void *data) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_cache_add           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *&nbsp;</td>
+          <td class="paramname"> <em>cache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&nbsp;</td>
+          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e3e18958c74ba988c2bfdf77a3793ceb"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_cache_del" ref="e3e18958c74ba988c2bfdf77a3793ceb" args="(struct lms_db_cache *cache, const sqlite3 *db, void *data) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int lms_db_cache_del           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *&nbsp;</td>
+          <td class="paramname"> <em>cache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&nbsp;</td>
+          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ec1ff2c5b629374611336d56871a8c0b"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_cache_get" ref="ec1ff2c5b629374611336d56871a8c0b" args="(struct lms_db_cache *cache, const sqlite3 *db, void **pdata) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int lms_db_cache_get           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *&nbsp;</td>
+          <td class="paramname"> <em>cache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>pdata</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6301bd096100f8adf24d2caff3aa0b75"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt" ref="6301bd096100f8adf24d2caff3aa0b75" args="(sqlite3 *db, const char *sql) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>sql</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="073c254ca7b4d3f42e1be1854bcc42a3"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt_begin_transaction" ref="073c254ca7b4d3f42e1be1854bcc42a3" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_begin_transaction           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00526">526</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="76941bdbbdb711fff821343e91c2cd97"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt_delete_file_info" ref="76941bdbbdb711fff821343e91c2cd97" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_delete_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00711">711</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="09feca4fbfde33d5647cdd5cc2de6500"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt_end_transaction" ref="09feca4fbfde33d5647cdd5cc2de6500" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_end_transaction           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00553">553</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="327d54a6dac083e356fd609298a0cbd5"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt_get_file_info" ref="327d54a6dac083e356fd609298a0cbd5" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_get_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00580">580</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="1cc8a80961a0febdd099a028f3da9c30"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt_get_files" ref="1cc8a80961a0febdd099a028f3da9c30" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_get_files           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00776">776</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="bf21f88ddbe28a8290d0df32af0f079c"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt_insert_file_info" ref="bf21f88ddbe28a8290d0df32af0f079c" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_insert_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00666">666</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="08c34b5b1b6e927a696ff0ce66562f54"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt_set_file_dtime" ref="08c34b5b1b6e927a696ff0ce66562f54" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_set_file_dtime           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00741">741</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="69eb9d9058d9432f7658f9adffb79ed6"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt_update_file_info" ref="69eb9d9058d9432f7658f9adffb79ed6" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_update_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00622">622</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="13ca09c885535a2968e707120e935268"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_create_core_tables_if_required" ref="13ca09c885535a2968e707120e935268" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int lms_db_create_core_tables_if_required           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00475">475</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="f47d604dd4e11f81be1ad045ee723789"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_create_trigger_if_not_exists" ref="f47d604dd4e11f81be1ad045ee723789" args="(sqlite3 *db, const char *sql) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_create_trigger_if_not_exists           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>sql</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ec17baec1e001f67334b0265d465fb50"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_delete_file_info" ref="ec17baec1e001f67334b0265d465fb50" args="(sqlite3_stmt *stmt, const struct lms_file_info *finfo) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int lms_db_delete_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="8ee7bfba83958b80f717a6ccbad2a84c"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_end_transaction" ref="8ee7bfba83958b80f717a6ccbad2a84c" args="(sqlite3_stmt *stmt) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_end_transaction           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00559">559</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01047">lms_process_single_process()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="2660f629fbdf3d4144a6143fee837a27"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_finalize_stmt" ref="2660f629fbdf3d4144a6143fee837a27" args="(sqlite3_stmt *stmt, const char *name) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* int lms_db_finalize_stmt           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e1df123e8d894a49f740ec6429af8159"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_get_file_info" ref="e1df123e8d894a49f740ec6429af8159" args="(sqlite3_stmt *stmt, struct lms_file_info *finfo) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int lms_db_get_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="617b14b976ba1cde9fe639800f2eae71"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_get_files" ref="617b14b976ba1cde9fe639800f2eae71" args="(sqlite3_stmt *stmt, const char *path, int len) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int int int lms_db_get_files           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>path</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="9353bf3cfbe2c0045023658597b0cf1d"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_insert_file_info" ref="9353bf3cfbe2c0045023658597b0cf1d" args="(sqlite3_stmt *stmt, struct lms_file_info *finfo) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int lms_db_insert_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ee78f418f0f3c9ead3023b1453c63556"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_reset_stmt" ref="ee78f418f0f3c9ead3023b1453c63556" args="(sqlite3_stmt *stmt) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* int int lms_db_reset_stmt           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">128</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00036">sqlite3_clear_bindings()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00717">lms_db_delete_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">lms_db_set_file_dtime()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00270">lms_db_table_version_get()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">lms_db_update_file_info()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="0fa3bfe1fa3a01a4dd231b6f818122cb"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_set_file_dtime" ref="0fa3bfe1fa3a01a4dd231b6f818122cb" args="(sqlite3_stmt *stmt, const struct lms_file_info *finfo) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int int lms_db_set_file_dtime           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="3dcf825514196befd0a4575e4afd0b58"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_table_update" ref="3dcf825514196befd0a4575e4afd0b58" args="(sqlite3 *db, const char *table, unsigned int current_version, unsigned int last_version, const lms_db_table_updater_t *updaters) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_table_update           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>current_version</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>last_version</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>updaters</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="455c0e5d62094b01fc935c5db8f07352"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_table_update_if_required" ref="455c0e5d62094b01fc935c5db8f07352" args="(sqlite3 *db, const char *table, unsigned int last_version, lms_db_table_updater_t *updaters) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int lms_db_table_update_if_required           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>last_version</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>updaters</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="23cf7fff49641b39c017bdd076b112a7"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_table_version_get" ref="23cf7fff49641b39c017bdd076b112a7" args="(sqlite3 *db, const char *table) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int lms_db_table_version_get           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>table</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="1c57f68c64069575a36252816929e335"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_table_version_set" ref="1c57f68c64069575a36252816929e335" args="(sqlite3 *db, const char *table, unsigned int version) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int lms_db_table_version_set           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>version</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="9cce62321be32274de720ec946473eeb"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_update_file_info" ref="9cce62321be32274de720ec946473eeb" args="(sqlite3_stmt *stmt, const struct lms_file_info *finfo) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_update_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Variable Documentation</h2>
+<a class="anchor" name="31db275bbea4b156c8b4493dac818b73"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_table_updater_t" ref="31db275bbea4b156c8b4493dac818b73" args=")(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int typedef int(* <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a>)(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.dot b/www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.dot
new file mode 100644 (file)
index 0000000..7df1b94
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_compile_stmt_begin_transaction",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.md5
new file mode 100644 (file)
index 0000000..cf668af
--- /dev/null
@@ -0,0 +1 @@
+13e738f4464a76bd8c9e28877a6e1e3c
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.dot b/www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.dot
new file mode 100644 (file)
index 0000000..0680393
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_compile_stmt_set_file_dtime",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.md5
new file mode 100644 (file)
index 0000000..fedc6c8
--- /dev/null
@@ -0,0 +1 @@
+b0290321179ccfdf6b868a1401368d8d
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.dot b/www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.dot
new file mode 100644 (file)
index 0000000..b64fcc8
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_compile_stmt_end_transaction",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.md5
new file mode 100644 (file)
index 0000000..b1b801b
--- /dev/null
@@ -0,0 +1 @@
+acd0d2b716dec99598ca58c2c146c8bf
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.dot b/www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.dot
new file mode 100644 (file)
index 0000000..be42de1
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_compile_stmt_get_files",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.md5
new file mode 100644 (file)
index 0000000..90eeb5f
--- /dev/null
@@ -0,0 +1 @@
+80941c09f55fa7c9f4866a3116b5da2b
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.dot b/www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.dot
new file mode 100644 (file)
index 0000000..2771c4c
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_compile_stmt_get_file_info",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.md5
new file mode 100644 (file)
index 0000000..77f12b4
--- /dev/null
@@ -0,0 +1 @@
+30a178024a3fa9cb54b3263f2f21a170
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.dot b/www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.dot
new file mode 100644 (file)
index 0000000..06793b5
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_compile_stmt_update_file_info",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.md5
new file mode 100644 (file)
index 0000000..8f21f90
--- /dev/null
@@ -0,0 +1 @@
+6d39a7d391eabe504c0839a7bef2900c
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.dot b/www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.dot
new file mode 100644 (file)
index 0000000..cbc9539
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_compile_stmt_delete_file_info",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.md5
new file mode 100644 (file)
index 0000000..f10c3f1
--- /dev/null
@@ -0,0 +1 @@
+828ab82b5d7649c83e6458a1e260c2a8
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h__dep__incl.dot b/www/api/lightmediascanner__db__private_8h__dep__incl.dot
new file mode 100644 (file)
index 0000000..a418b8b
--- /dev/null
@@ -0,0 +1,21 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_db_private.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="src/lib/lightmediascanner_check.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__check_8c.html"];
+  Node1 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="src/lib/lightmediascanner_db_audio.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__audio_8c.html"];
+  Node1 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="src/lib/lightmediascanner_db_common.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html"];
+  Node1 -> Node5 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="src/lib/lightmediascanner_db_image.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__image_8c.html"];
+  Node1 -> Node6 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="src/lib/lightmediascanner_db_playlist.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__playlist_8c.html"];
+  Node1 -> Node7 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="src/lib/lightmediascanner_db_video.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__video_8c.html"];
+  Node1 -> Node8 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="src/lib/lightmediascanner_process.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__process_8c.html"];
+}
diff --git a/www/api/lightmediascanner__db__private_8h__dep__incl.md5 b/www/api/lightmediascanner__db__private_8h__dep__incl.md5
new file mode 100644 (file)
index 0000000..d6a17ad
--- /dev/null
@@ -0,0 +1 @@
+bd599d87ccd4ef1044acb8dd3e63aa65
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h__incl.dot b/www/api/lightmediascanner__db__private_8h__incl.dot
new file mode 100644 (file)
index 0000000..d64ca94
--- /dev/null
@@ -0,0 +1,19 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_db_private.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="sqlite3.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lightmediascanner_plugin.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__plugin_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="lightmediascanner.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8h.html"];
+  Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="lightmediascanner_charset_conv.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__charset__conv_8h.html"];
+  Node4 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}
diff --git a/www/api/lightmediascanner__db__private_8h__incl.md5 b/www/api/lightmediascanner__db__private_8h__incl.md5
new file mode 100644 (file)
index 0000000..445625a
--- /dev/null
@@ -0,0 +1 @@
+8903f3c6c7e9cbd9e421137e634c8f65
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.dot b/www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.dot
new file mode 100644 (file)
index 0000000..e462eba
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_compile_stmt_insert_file_info",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_compile_stmt",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sqlite3_prepare_v2",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405"];
+}
diff --git a/www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.md5
new file mode 100644 (file)
index 0000000..33febad
--- /dev/null
@@ -0,0 +1 @@
+a16e0583ca842d2f781066f594511cbd
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.dot b/www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.dot
new file mode 100644 (file)
index 0000000..351b74b
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_db_reset_stmt",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="sqlite3_clear_bindings",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00"];
+}
diff --git a/www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.md5
new file mode 100644 (file)
index 0000000..5e3f228
--- /dev/null
@@ -0,0 +1 @@
+62f0680e416b51bf8b87f43cae646e3a
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__video_8c-source.html b/www/api/lightmediascanner__db__video_8c-source.html
new file mode 100644 (file)
index 0000000..3662f68
--- /dev/null
@@ -0,0 +1,239 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_db_video.c Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>src/lib/lightmediascanner_db_video.c</h1><a href="lightmediascanner__db__video_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 <span class="keyword">struct </span>lms_db_video {
+<a name="l00027"></a>00027     sqlite3 *db;
+<a name="l00028"></a>00028     sqlite3_stmt *insert;
+<a name="l00029"></a>00029     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _references;
+<a name="l00030"></a>00030     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _is_started:1;
+<a name="l00031"></a>00031 };
+<a name="l00032"></a>00032 
+<a name="l00033"></a>00033 <span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structlms__db__cache.html">lms_db_cache</a> _cache = {0, NULL};
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00036"></a>00036 _db_table_updater_videos_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
+<a name="l00037"></a>00037     <span class="keywordtype">char</span> *errmsg;
+<a name="l00038"></a>00038     <span class="keywordtype">int</span> r, ret;
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040     errmsg = NULL;
+<a name="l00041"></a>00041     r = sqlite3_exec(db,
+<a name="l00042"></a>00042                      <span class="stringliteral">"CREATE TABLE IF NOT EXISTS videos ("</span>
+<a name="l00043"></a>00043                      <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
+<a name="l00044"></a>00044                      <span class="stringliteral">"title TEXT, "</span>
+<a name="l00045"></a>00045                      <span class="stringliteral">"artist TEXT"</span>
+<a name="l00046"></a>00046                      <span class="stringliteral">")"</span>,
+<a name="l00047"></a>00047                      NULL, NULL, &amp;errmsg);
+<a name="l00048"></a>00048     <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00049"></a>00049         fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'videos' table: %s\n"</span>, errmsg);
+<a name="l00050"></a>00050         sqlite3_free(errmsg);
+<a name="l00051"></a>00051         <span class="keywordflow">return</span> -1;
+<a name="l00052"></a>00052     }
+<a name="l00053"></a>00053 
+<a name="l00054"></a>00054     r = sqlite3_exec(db,
+<a name="l00055"></a>00055                      <span class="stringliteral">"CREATE INDEX IF NOT EXISTS videos_title_idx ON videos ("</span>
+<a name="l00056"></a>00056                      <span class="stringliteral">"title"</span>
+<a name="l00057"></a>00057                      <span class="stringliteral">")"</span>,
+<a name="l00058"></a>00058                      NULL, NULL, &amp;errmsg);
+<a name="l00059"></a>00059     <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00060"></a>00060         fprintf(stderr,
+<a name="l00061"></a>00061                 <span class="stringliteral">"ERROR: could not create 'videos_title_idx' index: %s\n"</span>,
+<a name="l00062"></a>00062                 errmsg);
+<a name="l00063"></a>00063         sqlite3_free(errmsg);
+<a name="l00064"></a>00064         <span class="keywordflow">return</span> -2;
+<a name="l00065"></a>00065     }
+<a name="l00066"></a>00066 
+<a name="l00067"></a>00067     r = sqlite3_exec(db,
+<a name="l00068"></a>00068                      <span class="stringliteral">"CREATE INDEX IF NOT EXISTS videos_artist_idx ON videos ("</span>
+<a name="l00069"></a>00069                      <span class="stringliteral">"artist"</span>
+<a name="l00070"></a>00070                      <span class="stringliteral">")"</span>,
+<a name="l00071"></a>00071                      NULL, NULL, &amp;errmsg);
+<a name="l00072"></a>00072     <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00073"></a>00073         fprintf(stderr,
+<a name="l00074"></a>00074                 <span class="stringliteral">"ERROR: could not create 'videos_artist_idx' index: %s\n"</span>,
+<a name="l00075"></a>00075                 errmsg);
+<a name="l00076"></a>00076         sqlite3_free(errmsg);
+<a name="l00077"></a>00077         <span class="keywordflow">return</span> -3;
+<a name="l00078"></a>00078     }
+<a name="l00079"></a>00079 
+<a name="l00080"></a>00080     ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00081"></a>00081         <span class="stringliteral">"delete_videos_on_files_deleted "</span>
+<a name="l00082"></a>00082         <span class="stringliteral">"DELETE ON files FOR EACH ROW BEGIN "</span>
+<a name="l00083"></a>00083         <span class="stringliteral">" DELETE FROM videos WHERE id = OLD.id; END;"</span>);
+<a name="l00084"></a>00084     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00085"></a>00085         <span class="keywordflow">goto</span> done;
+<a name="l00086"></a>00086 
+<a name="l00087"></a>00087     ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00088"></a>00088         <span class="stringliteral">"delete_files_on_videos_deleted "</span>
+<a name="l00089"></a>00089         <span class="stringliteral">"DELETE ON videos FOR EACH ROW BEGIN "</span>
+<a name="l00090"></a>00090         <span class="stringliteral">" DELETE FROM files WHERE id = OLD.id; END;"</span>);
+<a name="l00091"></a>00091 
+<a name="l00092"></a>00092   done:
+<a name="l00093"></a>00093     <span class="keywordflow">return</span> ret;
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095 
+<a name="l00096"></a>00096 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> _db_table_updater_videos[] = {
+<a name="l00097"></a>00097     _db_table_updater_videos_0
+<a name="l00098"></a>00098 };
+<a name="l00099"></a>00099 
+<a name="l00100"></a>00100 
+<a name="l00101"></a>00101 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00102"></a>00102 _db_create_table_if_required(sqlite3 *db)
+<a name="l00103"></a>00103 {
+<a name="l00104"></a>00104     <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a>(db, <span class="stringliteral">"videos"</span>,
+<a name="l00105"></a>00105          <a class="code" href="lightmediascanner__utils_8h.html#13a0622cfcc91eec261da4285621bdcc">LMS_ARRAY_SIZE</a>(_db_table_updater_videos),
+<a name="l00106"></a>00106          _db_table_updater_videos);
+<a name="l00107"></a>00107 }
+<a name="l00108"></a>00108 
+<a name="l00123"></a>00123 <a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *
+<a name="l00124"></a><a class="code" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">00124</a> <a class="code" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new</a>(sqlite3 *db)
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126     <a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv;
+<a name="l00127"></a>00127     <span class="keywordtype">void</span> *p;
+<a name="l00128"></a>00128 
+<a name="l00129"></a>00129     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a>(&amp;_cache, db, &amp;p) == 0) {
+<a name="l00130"></a>00130         ldv = p;
+<a name="l00131"></a>00131         ldv-&gt;_references++;
+<a name="l00132"></a>00132         <span class="keywordflow">return</span> ldv;
+<a name="l00133"></a>00133     }
+<a name="l00134"></a>00134 
+<a name="l00135"></a>00135     <span class="keywordflow">if</span> (!db)
+<a name="l00136"></a>00136         <span class="keywordflow">return</span> NULL;
+<a name="l00137"></a>00137 
+<a name="l00138"></a>00138     <span class="keywordflow">if</span> (_db_create_table_if_required(db) != 0) {
+<a name="l00139"></a>00139         fprintf(stderr, <span class="stringliteral">"ERROR: could not create table.\n"</span>);
+<a name="l00140"></a>00140         <span class="keywordflow">return</span> NULL;
+<a name="l00141"></a>00141     }
+<a name="l00142"></a>00142 
+<a name="l00143"></a>00143     ldv = calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a>));
+<a name="l00144"></a>00144     ldv-&gt;_references = 1;
+<a name="l00145"></a>00145     ldv-&gt;db = db;
+<a name="l00146"></a>00146 
+<a name="l00147"></a>00147     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a>(&amp;_cache, db, ldv) != 0) {
+<a name="l00148"></a>00148         <a class="code" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lms_db_video_free</a>(ldv);
+<a name="l00149"></a>00149         <span class="keywordflow">return</span> NULL;
+<a name="l00150"></a>00150     }
+<a name="l00151"></a>00151 
+<a name="l00152"></a>00152     <span class="keywordflow">return</span> ldv;
+<a name="l00153"></a>00153 }
+<a name="l00154"></a>00154 
+<a name="l00167"></a>00167 <span class="keywordtype">int</span>
+<a name="l00168"></a><a class="code" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">00168</a> <a class="code" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lms_db_video_start</a>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv)
+<a name="l00169"></a>00169 {
+<a name="l00170"></a>00170     <span class="keywordflow">if</span> (!ldv)
+<a name="l00171"></a>00171         <span class="keywordflow">return</span> -1;
+<a name="l00172"></a>00172     <span class="keywordflow">if</span> (ldv-&gt;_is_started)
+<a name="l00173"></a>00173         <span class="keywordflow">return</span> 0;
+<a name="l00174"></a>00174 
+<a name="l00175"></a>00175     ldv-&gt;insert = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(ldv-&gt;db,
+<a name="l00176"></a>00176         <span class="stringliteral">"INSERT OR REPLACE INTO videos (id, title, artist) VALUES (?, ?, ?)"</span>);
+<a name="l00177"></a>00177     <span class="keywordflow">if</span> (!ldv-&gt;insert)
+<a name="l00178"></a>00178         <span class="keywordflow">return</span> -2;
+<a name="l00179"></a>00179 
+<a name="l00180"></a>00180     ldv-&gt;_is_started = 1;
+<a name="l00181"></a>00181     <span class="keywordflow">return</span> 0;
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183 
+<a name="l00196"></a>00196 <span class="keywordtype">int</span>
+<a name="l00197"></a><a class="code" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">00197</a> <a class="code" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lms_db_video_free</a>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv)
+<a name="l00198"></a>00198 {
+<a name="l00199"></a>00199     <span class="keywordtype">int</span> r;
+<a name="l00200"></a>00200 
+<a name="l00201"></a>00201     <span class="keywordflow">if</span> (!ldv)
+<a name="l00202"></a>00202         <span class="keywordflow">return</span> -1;
+<a name="l00203"></a>00203     <span class="keywordflow">if</span> (ldv-&gt;_references == 0) {
+<a name="l00204"></a>00204         fprintf(stderr, <span class="stringliteral">"ERROR: over-called lms_db_video_free(%p)\n"</span>, ldv);
+<a name="l00205"></a>00205         <span class="keywordflow">return</span> -1;
+<a name="l00206"></a>00206     }
+<a name="l00207"></a>00207 
+<a name="l00208"></a>00208     ldv-&gt;_references--;
+<a name="l00209"></a>00209     <span class="keywordflow">if</span> (ldv-&gt;_references &gt; 0)
+<a name="l00210"></a>00210         <span class="keywordflow">return</span> 0;
+<a name="l00211"></a>00211 
+<a name="l00212"></a>00212     <span class="keywordflow">if</span> (ldv-&gt;insert)
+<a name="l00213"></a>00213         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(ldv-&gt;insert, <span class="stringliteral">"insert"</span>);
+<a name="l00214"></a>00214 
+<a name="l00215"></a>00215     r = <a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a>(&amp;_cache, ldv-&gt;db, ldv);
+<a name="l00216"></a>00216     free(ldv);
+<a name="l00217"></a>00217 
+<a name="l00218"></a>00218     <span class="keywordflow">return</span> r;
+<a name="l00219"></a>00219 }
+<a name="l00220"></a>00220 
+<a name="l00221"></a>00221 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00222"></a>00222 _db_insert(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__video__info.html">lms_video_info</a> *info)
+<a name="l00223"></a>00223 {
+<a name="l00224"></a>00224     sqlite3_stmt *stmt;
+<a name="l00225"></a>00225     <span class="keywordtype">int</span> r, ret;
+<a name="l00226"></a>00226 
+<a name="l00227"></a>00227     stmt = ldv-&gt;insert;
+<a name="l00228"></a>00228 
+<a name="l00229"></a>00229     ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, info-&gt;<a class="code" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">id</a>);
+<a name="l00230"></a>00230     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00231"></a>00231         <span class="keywordflow">goto</span> done;
+<a name="l00232"></a>00232 
+<a name="l00233"></a>00233     ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 2, info-&gt;<a class="code" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">title</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-&gt;<a class="code" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">title</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00234"></a>00234     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00235"></a>00235         <span class="keywordflow">goto</span> done;
+<a name="l00236"></a>00236 
+<a name="l00237"></a>00237     ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 3, info-&gt;<a class="code" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">artist</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-&gt;<a class="code" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">artist</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00238"></a>00238     <span class="keywordflow">if</span> (ret != 0)
+<a name="l00239"></a>00239         <span class="keywordflow">goto</span> done;
+<a name="l00240"></a>00240 
+<a name="l00241"></a>00241     r = sqlite3_step(stmt);
+<a name="l00242"></a>00242     <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00243"></a>00243         fprintf(stderr, <span class="stringliteral">"ERROR: could not insert video info: %s\n"</span>,
+<a name="l00244"></a>00244                 sqlite3_errmsg(ldv-&gt;db));
+<a name="l00245"></a>00245         ret = -4;
+<a name="l00246"></a>00246         <span class="keywordflow">goto</span> done;
+<a name="l00247"></a>00247     }
+<a name="l00248"></a>00248 
+<a name="l00249"></a>00249     ret = 0;
+<a name="l00250"></a>00250 
+<a name="l00251"></a>00251   done:
+<a name="l00252"></a>00252     <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00253"></a>00253 
+<a name="l00254"></a>00254     <span class="keywordflow">return</span> ret;
+<a name="l00255"></a>00255 }
+<a name="l00256"></a>00256 
+<a name="l00268"></a>00268 <span class="keywordtype">int</span>
+<a name="l00269"></a><a class="code" href="lightmediascanner__db__video_8c.html#700adc9c25a70e5cd1d77812324b748e">00269</a> <a class="code" href="group__LMS__DB.html#gb07d1e7fe962486b6e9d00581e8aac19">lms_db_video_add</a>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv, <span class="keyword">struct</span> <a class="code" href="structlms__video__info.html">lms_video_info</a> *info)
+<a name="l00270"></a>00270 {
+<a name="l00271"></a>00271     <span class="keywordflow">if</span> (!ldv)
+<a name="l00272"></a>00272         <span class="keywordflow">return</span> -1;
+<a name="l00273"></a>00273     <span class="keywordflow">if</span> (!info)
+<a name="l00274"></a>00274         <span class="keywordflow">return</span> -2;
+<a name="l00275"></a>00275     <span class="keywordflow">if</span> (info-&gt;<a class="code" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">id</a> &lt; 1)
+<a name="l00276"></a>00276         <span class="keywordflow">return</span> -3;
+<a name="l00277"></a>00277 
+<a name="l00278"></a>00278     <span class="keywordflow">return</span> _db_insert(ldv, info);
+<a name="l00279"></a>00279 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__video_8c.html b/www/api/lightmediascanner__db__video_8c.html
new file mode 100644 (file)
index 0000000..04a5a65
--- /dev/null
@@ -0,0 +1,97 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_db_video.c File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>src/lib/lightmediascanner_db_video.c File Reference</h1><code>#include &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&quot;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</code><br>
+
+<p>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_db_video.c:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<a href="lightmediascanner__db__video_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lms_db_video_start</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lms_db_video_free</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__video_8c.html#700adc9c25a70e5cd1d77812324b748e">lms_db_video_add</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv, struct <a class="el" href="structlms__video__info.html">lms_video_info</a> *info)</td></tr>
+
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="700adc9c25a70e5cd1d77812324b748e"></a><!-- doxytag: member="lightmediascanner_db_video.c::lms_db_video_add" ref="700adc9c25a70e5cd1d77812324b748e" args="(lms_db_video_t *ldv, struct lms_video_info *info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_video_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldv</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__video__info.html">lms_video_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add video file to DB.<p>
+This is usually called from plugin's <b>parse()</b> callback.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>ldv</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>info</em>&nbsp;</td><td>video information to store.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__video_8c-source.html#l00269">269</a> of file <a class="el" href="lightmediascanner__db__video_8c-source.html">lightmediascanner_db_video.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db_8h-source.html#l00106">lms_video_info::id</a>.</p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__video_8c__incl.dot b/www/api/lightmediascanner__db__video_8c__incl.dot
new file mode 100644 (file)
index 0000000..824622c
--- /dev/null
@@ -0,0 +1,30 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_db_video.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lightmediascanner_db.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lightmediascanner_plugin.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__plugin_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lightmediascanner.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8h.html"];
+  Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="lightmediascanner_charset_conv.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__charset__conv_8h.html"];
+  Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="sqlite3.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="lightmediascanner_utils.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__utils_8h.html"];
+  Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="lightmediascanner_db_private.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__private_8h.html"];
+  Node9 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="stdlib.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="stdio.h",height=0.2,width=0.4,color="grey75"];
+}
diff --git a/www/api/lightmediascanner__db__video_8c__incl.md5 b/www/api/lightmediascanner__db__video_8c__incl.md5
new file mode 100644 (file)
index 0000000..4bc9d68
--- /dev/null
@@ -0,0 +1 @@
+bbea3248e170fe8440018cf1110c3ef7
\ No newline at end of file
diff --git a/www/api/lightmediascanner__plugin_8h-source.html b/www/api/lightmediascanner__plugin_8h-source.html
new file mode 100644 (file)
index 0000000..f6baa31
--- /dev/null
@@ -0,0 +1,87 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_plugin.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>src/lib/lightmediascanner_plugin.h</h1><a href="lightmediascanner__plugin_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00133"></a>00133 <span class="preprocessor">#ifndef _LIGHTMEDIASCANNER_PLUGIN_H_</span>
+<a name="l00134"></a><a class="code" href="lightmediascanner__plugin_8h.html#25abdf2375defcfc83bf95ef930fc739">00134</a> <span class="preprocessor"></span><span class="preprocessor">#define _LIGHTMEDIASCANNER_PLUGIN_H_ 1</span>
+<a name="l00135"></a>00135 <span class="preprocessor"></span>
+<a name="l00136"></a>00136 <span class="preprocessor">#include &lt;<a class="code" href="lightmediascanner_8h.html">lightmediascanner.h</a>&gt;</span>
+<a name="l00137"></a>00137 <span class="preprocessor">#include &lt;<a class="code" href="lightmediascanner__charset__conv_8h.html">lightmediascanner_charset_conv.h</a>&gt;</span>
+<a name="l00138"></a>00138 <span class="preprocessor">#include &lt;sqlite3.h&gt;</span>
+<a name="l00139"></a>00139 <span class="preprocessor">#include &lt;sys/types.h&gt;</span>
+<a name="l00140"></a>00140 
+<a name="l00141"></a>00141 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00142"></a>00142 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+<a name="l00143"></a>00143 <span class="preprocessor">#endif</span>
+<a name="l00144"></a>00144 <span class="preprocessor"></span>
+<a name="l00145"></a><a class="code" href="structlms__file__info.html">00145</a>     <span class="keyword">struct </span><a class="code" href="structlms__file__info.html">lms_file_info</a> {
+<a name="l00146"></a><a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">00146</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>; 
+<a name="l00147"></a><a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">00147</a>         <span class="keywordtype">int</span> <a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>; 
+<a name="l00148"></a><a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">00148</a>         <span class="keywordtype">int</span> <a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a>; 
+<a name="l00149"></a><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">00149</a>         int64_t <a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a>; 
+<a name="l00150"></a><a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">00150</a>         time_t <a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a>; 
+<a name="l00151"></a><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">00151</a>         time_t <a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>; 
+<a name="l00152"></a><a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">00152</a>         <span class="keywordtype">size_t</span> <a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a>; 
+<a name="l00153"></a>00153     };
+<a name="l00154"></a>00154 
+<a name="l00155"></a><a class="code" href="structlms__context.html">00155</a>     <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> {
+<a name="l00156"></a><a class="code" href="structlms__context.html#310d38a2fab9ecea67601d0c6a3d8d81">00156</a>         sqlite3 *<a class="code" href="structlms__context.html#310d38a2fab9ecea67601d0c6a3d8d81">db</a>; 
+<a name="l00157"></a><a class="code" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">00157</a>         <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *<a class="code" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">cs_conv</a>; 
+<a name="l00158"></a>00158     };
+<a name="l00159"></a>00159 
+<a name="l00160"></a><a class="code" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">00160</a>     <span class="keyword">typedef</span> <span class="keywordtype">void</span> *(*lms_plugin_match_fn_t)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> base);
+<a name="l00161"></a><a class="code" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">00161</a>     <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lms_plugin_parse_fn_t</a>)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> *ctxt, <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo, <span class="keywordtype">void</span> *match);
+<a name="l00162"></a><a class="code" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">00162</a>     <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lms_plugin_close_fn_t</a>)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p);
+<a name="l00163"></a><a class="code" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">00163</a>     <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lms_plugin_setup_fn_t</a>)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> *ctxt);
+<a name="l00164"></a><a class="code" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">00164</a>     <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lms_plugin_start_fn_t</a>)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> *ctxt);
+<a name="l00165"></a><a class="code" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">00165</a>     <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lms_plugin_finish_fn_t</a>)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> *ctxt);
+<a name="l00166"></a>00166 
+<a name="l00167"></a><a class="code" href="structlms__plugin.html">00167</a>     <span class="keyword">struct </span><a class="code" href="structlms__plugin.html">lms_plugin</a> {
+<a name="l00168"></a><a class="code" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">00168</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">name</a>; 
+<a name="l00169"></a><a class="code" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">00169</a>         <a class="code" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">lms_plugin_match_fn_t</a> <a class="code" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">match</a>; 
+<a name="l00170"></a><a class="code" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">00170</a>         <a class="code" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lms_plugin_parse_fn_t</a> <a class="code" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">parse</a>; 
+<a name="l00171"></a><a class="code" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">00171</a>         <a class="code" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lms_plugin_close_fn_t</a> <a class="code" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">close</a>; 
+<a name="l00172"></a><a class="code" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">00172</a>         <a class="code" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lms_plugin_setup_fn_t</a> <a class="code" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">setup</a>; 
+<a name="l00173"></a><a class="code" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">00173</a>         <a class="code" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lms_plugin_start_fn_t</a> <a class="code" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">start</a>; 
+<a name="l00174"></a><a class="code" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">00174</a>         <a class="code" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lms_plugin_finish_fn_t</a> <a class="code" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">finish</a>; 
+<a name="l00175"></a>00175     };
+<a name="l00176"></a>00176 
+<a name="l00177"></a><a class="code" href="structlms__plugin__info.html">00177</a>     <span class="keyword">struct </span><a class="code" href="structlms__plugin__info.html">lms_plugin_info</a> {
+<a name="l00178"></a><a class="code" href="structlms__plugin__info.html#fad60ec7f8d34b2082b353a03e2cb836">00178</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__plugin__info.html#fad60ec7f8d34b2082b353a03e2cb836">name</a>; 
+<a name="l00179"></a><a class="code" href="structlms__plugin__info.html#d5fd907e4bcc553eb9474aa132435c9c">00179</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> *<a class="code" href="structlms__plugin__info.html#d5fd907e4bcc553eb9474aa132435c9c">categories</a>; 
+<a name="l00180"></a><a class="code" href="structlms__plugin__info.html#2e1df9478dd1f9dc62e81e208a2ebd3e">00180</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__plugin__info.html#2e1df9478dd1f9dc62e81e208a2ebd3e">description</a>; 
+<a name="l00181"></a><a class="code" href="structlms__plugin__info.html#032d3fd2490ad7907e1ea27abad59915">00181</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__plugin__info.html#032d3fd2490ad7907e1ea27abad59915">version</a>; 
+<a name="l00182"></a><a class="code" href="structlms__plugin__info.html#5dd799fc0e3dd7e798f053ecf773e59a">00182</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> *<a class="code" href="structlms__plugin__info.html#5dd799fc0e3dd7e798f053ecf773e59a">authors</a>; 
+<a name="l00183"></a><a class="code" href="structlms__plugin__info.html#8f5826185c7cb3a4155fca8683b817e2">00183</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__plugin__info.html#8f5826185c7cb3a4155fca8683b817e2">uri</a>; 
+<a name="l00184"></a>00184     };
+<a name="l00185"></a>00185 
+<a name="l00186"></a>00186 
+<a name="l00187"></a>00187 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00188"></a>00188 <span class="preprocessor"></span>}
+<a name="l00189"></a>00189 <span class="preprocessor">#endif</span>
+<a name="l00190"></a>00190 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_PLUGIN_H_ */</span>
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__plugin_8h.html b/www/api/lightmediascanner__plugin_8h.html
new file mode 100644 (file)
index 0000000..67436ac
--- /dev/null
@@ -0,0 +1,197 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_plugin.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>src/lib/lightmediascanner_plugin.h File Reference</h1><code>#include &lt;<a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>&gt;</code><br>
+<code>#include &lt;sqlite3.h&gt;</code><br>
+<code>#include &lt;sys/types.h&gt;</code><br>
+
+<p>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_plugin.h:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<a href="lightmediascanner__plugin_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__file__info.html">lms_file_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__context.html">lms_context</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html">lms_plugin</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin__info.html">lms_plugin_info</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#25abdf2375defcfc83bf95ef930fc739">_LIGHTMEDIASCANNER_PLUGIN_H_</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">lms_plugin_match_fn_t</a> )(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, const char *path, int len, int base)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lms_plugin_parse_fn_t</a> )(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt, const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo, void *match)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lms_plugin_close_fn_t</a> )(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lms_plugin_setup_fn_t</a> )(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lms_plugin_start_fn_t</a> )(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lms_plugin_finish_fn_t</a> )(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt)</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="25abdf2375defcfc83bf95ef930fc739"></a><!-- doxytag: member="lightmediascanner_plugin.h::_LIGHTMEDIASCANNER_PLUGIN_H_" ref="25abdf2375defcfc83bf95ef930fc739" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _LIGHTMEDIASCANNER_PLUGIN_H_&nbsp;&nbsp;&nbsp;1          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00134">134</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+</div>
+</div><p>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="44576c68c208c78f34f41fcd6c7c2c4b"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_close_fn_t" ref="44576c68c208c78f34f41fcd6c7c2c4b" args=")(lms_plugin_t *p)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int(* <a class="el" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lms_plugin_close_fn_t</a>)(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00162">162</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="c72facc8d4fa98f660fd064c80d5b321"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_finish_fn_t" ref="c72facc8d4fa98f660fd064c80d5b321" args=")(lms_plugin_t *p, struct lms_context *ctxt)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int(* <a class="el" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lms_plugin_finish_fn_t</a>)(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00165">165</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="558e8f031ecb3e6b8adf7d98f3e4fcd6"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_match_fn_t" ref="558e8f031ecb3e6b8adf7d98f3e4fcd6" args=")(lms_plugin_t *p, const char *path, int len, int base)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef void*(* <a class="el" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">lms_plugin_match_fn_t</a>)(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, const char *path, int len, int base)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00160">160</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="649350fd7015fa63ca86c43906c3f175"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_parse_fn_t" ref="649350fd7015fa63ca86c43906c3f175" args=")(lms_plugin_t *p, struct lms_context *ctxt, const struct lms_file_info *finfo, void *match)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int(* <a class="el" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lms_plugin_parse_fn_t</a>)(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt, const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo, void *match)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00161">161</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="6bfa82e6e83e85747048f41dfb334acd"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_setup_fn_t" ref="6bfa82e6e83e85747048f41dfb334acd" args=")(lms_plugin_t *p, struct lms_context *ctxt)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int(* <a class="el" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lms_plugin_setup_fn_t</a>)(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00163">163</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="875d300da41e72865452c6ae44687b77"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_start_fn_t" ref="875d300da41e72865452c6ae44687b77" args=")(lms_plugin_t *p, struct lms_context *ctxt)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int(* <a class="el" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lms_plugin_start_fn_t</a>)(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00164">164</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__plugin_8h__dep__incl.dot b/www/api/lightmediascanner__plugin_8h__dep__incl.dot
new file mode 100644 (file)
index 0000000..f6f6827
--- /dev/null
@@ -0,0 +1,36 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_plugin.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="src/lib/lightmediascanner_private.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__private_8h.html"];
+  Node2 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="src/lib/lightmediascanner.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8c.html"];
+  Node2 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="src/lib/lightmediascanner_check.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__check_8c.html"];
+  Node2 -> Node5 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="src/lib/lightmediascanner_process.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__process_8c.html"];
+  Node1 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node6 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="src/lib/lightmediascanner_db_private.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__private_8h.html"];
+  Node6 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 -> Node7 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="src/lib/lightmediascanner_db_audio.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__audio_8c.html"];
+  Node6 -> Node8 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="src/lib/lightmediascanner_db_common.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html"];
+  Node6 -> Node9 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="src/lib/lightmediascanner_db_image.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__image_8c.html"];
+  Node6 -> Node10 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="src/lib/lightmediascanner_db_playlist.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__playlist_8c.html"];
+  Node6 -> Node11 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="src/lib/lightmediascanner_db_video.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__video_8c.html"];
+  Node6 -> Node5 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node12 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="src/lib/lightmediascanner_db.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db_8h.html"];
+  Node12 -> Node7 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node9 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node10 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node11 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}
diff --git a/www/api/lightmediascanner__plugin_8h__dep__incl.md5 b/www/api/lightmediascanner__plugin_8h__dep__incl.md5
new file mode 100644 (file)
index 0000000..9dcf863
--- /dev/null
@@ -0,0 +1 @@
+a9906b5c2132f42633db5a1ade84d1e1
\ No newline at end of file
diff --git a/www/api/lightmediascanner__plugin_8h__incl.dot b/www/api/lightmediascanner__plugin_8h__incl.dot
new file mode 100644 (file)
index 0000000..be20be6
--- /dev/null
@@ -0,0 +1,15 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_plugin.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lightmediascanner.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8h.html"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lightmediascanner_charset_conv.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__charset__conv_8h.html"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="sqlite3.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+}
diff --git a/www/api/lightmediascanner__plugin_8h__incl.md5 b/www/api/lightmediascanner__plugin_8h__incl.md5
new file mode 100644 (file)
index 0000000..5f503e1
--- /dev/null
@@ -0,0 +1 @@
+747005cef72865cbb967e30eec0a986c
\ No newline at end of file
diff --git a/www/api/lightmediascanner__private_8h-source.html b/www/api/lightmediascanner__private_8h-source.html
new file mode 100644 (file)
index 0000000..8ff57d3
--- /dev/null
@@ -0,0 +1,118 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_private.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>src/lib/lightmediascanner_private.h</h1><a href="lightmediascanner__private_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef _LIGHTMEDIASCANNER_PRIVATE_H_</span>
+<a name="l00022"></a><a class="code" href="lightmediascanner__private_8h.html#c9783e2105f145aa71f541e0825707ed">00022</a> <span class="preprocessor"></span><span class="preprocessor">#define _LIGHTMEDIASCANNER_PRIVATE_H_ 1</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#ifdef __GNUC__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt; 3 || (__GNUC__ == 3 &amp;&amp; __GNUC_MINOR__ &gt;= 4)</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00031"></a><a class="code" href="lightmediascanner__private_8h.html#6fe68cac0abf3e2ca61141920414e93a">00031</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="lightmediascanner_8h.html">lightmediascanner.h</a>"</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__plugin_8h.html">lightmediascanner_plugin.h</a>"</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__charset__conv_8h.html">lightmediascanner_charset_conv.h</a>"</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;sys/types.h&gt;</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;poll.h&gt;</span>
+<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;limits.h&gt;</span>
+<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;sqlite3.h&gt;</span>
+<a name="l00041"></a>00041 
+<a name="l00042"></a><a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">00042</a> <span class="preprocessor">#define PATH_SIZE PATH_MAX</span>
+<a name="l00043"></a>00043 <span class="preprocessor"></span>
+<a name="l00044"></a><a class="code" href="structfds.html">00044</a> <span class="keyword">struct </span><a class="code" href="structfds.html">fds</a> {
+<a name="l00045"></a><a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">00045</a>     <span class="keywordtype">int</span> <a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>;
+<a name="l00046"></a><a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">00046</a>     <span class="keywordtype">int</span> <a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>;
+<a name="l00047"></a>00047 };
+<a name="l00048"></a>00048 
+<a name="l00049"></a><a class="code" href="structcinfo.html">00049</a> <span class="keyword">struct </span><a class="code" href="structcinfo.html">cinfo</a> {
+<a name="l00050"></a><a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">00050</a>     <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>;
+<a name="l00051"></a>00051 };
+<a name="l00052"></a>00052 
+<a name="l00053"></a>00053 <span class="comment">/* info to be carried along lms_process() and lms_check() */</span>
+<a name="l00054"></a><a class="code" href="structpinfo.html">00054</a> <span class="keyword">struct </span><a class="code" href="structpinfo.html">pinfo</a> {
+<a name="l00055"></a><a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">00055</a>     <span class="keyword">struct </span><a class="code" href="structcinfo.html">cinfo</a> <a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>;
+<a name="l00056"></a><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">00056</a>     pid_t <a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>;
+<a name="l00057"></a><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">00057</a>     <span class="keyword">struct </span><a class="code" href="structfds.html">fds</a> <a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>;
+<a name="l00058"></a><a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">00058</a>     <span class="keyword">struct </span><a class="code" href="structfds.html">fds</a> <a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>;
+<a name="l00059"></a><a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">00059</a>     <span class="keyword">struct </span>pollfd <a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>;
+<a name="l00060"></a>00060 };
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062 <span class="comment">/* same as struct pinfo for single process versions */</span>
+<a name="l00063"></a><a class="code" href="structsinfo.html">00063</a> <span class="keyword">struct </span><a class="code" href="structsinfo.html">sinfo</a> {
+<a name="l00064"></a><a class="code" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">00064</a>     <span class="keyword">struct </span><a class="code" href="structcinfo.html">cinfo</a> <a class="code" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">common</a>;
+<a name="l00065"></a><a class="code" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">00065</a>     <span class="keyword">struct </span><a class="code" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">db</a> *<a class="code" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">db</a>;
+<a name="l00066"></a><a class="code" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">00066</a>     <span class="keywordtype">void</span> **<a class="code" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">parser_match</a>;
+<a name="l00067"></a><a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">00067</a>     <span class="keywordtype">int</span> <a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a>;
+<a name="l00068"></a>00068 };
+<a name="l00069"></a>00069 
+<a name="l00070"></a><a class="code" href="structparser.html">00070</a> <span class="keyword">struct </span><a class="code" href="structparser.html">parser</a> {
+<a name="l00071"></a><a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">00071</a>     <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>;
+<a name="l00072"></a><a class="code" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">00072</a>     <span class="keywordtype">void</span> *<a class="code" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">dl_handle</a>;
+<a name="l00073"></a><a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">00073</a>     <span class="keywordtype">char</span> *<a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a>;
+<a name="l00074"></a>00074 };
+<a name="l00075"></a>00075 
+<a name="l00076"></a><a class="code" href="structlms.html">00076</a> <span class="keyword">struct </span><a class="code" href="structlms.html">lms</a> {
+<a name="l00077"></a><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">00077</a>     <span class="keyword">struct </span><a class="code" href="structparser.html">parser</a> *<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>;
+<a name="l00078"></a><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">00078</a>     <span class="keywordtype">int</span> <a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>;
+<a name="l00079"></a><a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">00079</a>     <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *<a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>;
+<a name="l00080"></a><a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">00080</a>     <span class="keywordtype">char</span> *<a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>;
+<a name="l00081"></a><a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">00081</a>     <span class="keywordtype">int</span> <a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>;
+<a name="l00082"></a>00082     <span class="keyword">struct </span>{
+<a name="l00083"></a><a class="code" href="structlms.html#94615d22fba40d580a8a0055d28221c4">00083</a>         <a class="code" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> <a class="code" href="structlms.html#94615d22fba40d580a8a0055d28221c4">cb</a>;
+<a name="l00084"></a><a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">00084</a>         <span class="keywordtype">void</span> *<a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a>;
+<a name="l00085"></a><a class="code" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">00085</a>         <a class="code" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a> <a class="code" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">free_data</a>;
+<a name="l00086"></a>00086     } <a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>;
+<a name="l00087"></a><a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">00087</a>     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a>;
+<a name="l00088"></a><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">00088</a>     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>:1;
+<a name="l00089"></a><a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">00089</a>     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a>:1;
+<a name="l00090"></a>00090 };
+<a name="l00091"></a>00091 
+<a name="l00092"></a><a class="code" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">00092</a> <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">process_file_callback_t</a>)(<span class="keyword">struct </span><a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keywordtype">int</span> base, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name);
+<a name="l00093"></a><a class="code" href="lightmediascanner__private_8h.html#818aa1ae6bb03151823bbd9b56bd0801">00093</a> <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__private_8h.html#818aa1ae6bb03151823bbd9b56bd0801">check_row_callback_t</a>)(<span class="keywordtype">void</span> *db_ptr, <span class="keyword">struct </span><a class="code" href="structcinfo.html">cinfo</a> *info);
+<a name="l00094"></a>00094 
+<a name="l00095"></a>00095 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lms_parser_del_int</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">int</span> i) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00096"></a>00096 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lms_create_pipes</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00097"></a>00097 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lms_close_pipes</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00098"></a>00098 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>, <span class="keywordtype">int</span> (*work)(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>)) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00099"></a>00099 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lms_restart_slave</a>(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> (*work)(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>)) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00100"></a>00100 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lms_finish_slave</a>(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> (*finish)(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>)) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00101"></a>00101 
+<a name="l00102"></a>00102 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lms_parsers_setup</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00103"></a>00103 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lms_parsers_start</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00104"></a>00104 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00105"></a>00105 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lms_parsers_check_using</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">void</span> **parser_match, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 3);
+<a name="l00106"></a>00106 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db, <span class="keywordtype">void</span> **parser_match, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 3, 4);
+<a name="l00107"></a>00107 
+<a name="l00108"></a>00108 
+<a name="l00109"></a>00109 <span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_PRIVATE_H_ */</span>
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__private_8h.html b/www/api/lightmediascanner__private_8h.html
new file mode 100644 (file)
index 0000000..6bc8ae2
--- /dev/null
@@ -0,0 +1,545 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_private.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>src/lib/lightmediascanner_private.h File Reference</h1><code>#include &quot;<a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>&quot;</code><br>
+<code>#include &lt;sys/types.h&gt;</code><br>
+<code>#include &lt;poll.h&gt;</code><br>
+<code>#include &lt;limits.h&gt;</code><br>
+<code>#include &lt;sqlite3.h&gt;</code><br>
+
+<p>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_private.h:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<a href="lightmediascanner__private_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfds.html">fds</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcinfo.html">cinfo</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html">pinfo</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsinfo.html">sinfo</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structparser.html">parser</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html">lms</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#c9783e2105f145aa71f541e0825707ed">_LIGHTMEDIASCANNER_PRIVATE_H_</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>&nbsp;&nbsp;&nbsp;PATH_MAX</td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">process_file_callback_t</a> )(struct <a class="el" href="structcinfo.html">cinfo</a> *info, int base, char *path, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#818aa1ae6bb03151823bbd9b56bd0801">check_row_callback_t</a> )(void *db_ptr, struct <a class="el" href="structcinfo.html">cinfo</a> *info)</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#239fc535d2f20f09eeec9df86aa6ef9b">lms_parser_del_int</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, int i) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lms_create_pipes</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lms_close_pipes</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>, int(*work)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lms_restart_slave</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>, int(*work)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lms_finish_slave</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>, int(*finish)(const struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lms_parsers_setup</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, sqlite3 *db) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lms_parsers_start</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, sqlite3 *db) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, sqlite3 *db) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lms_parsers_check_using</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, void **parser_match, struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int int int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, sqlite3 *db, void **parser_match, struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo) GNUC_NON_NULL(1</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="c9783e2105f145aa71f541e0825707ed"></a><!-- doxytag: member="lightmediascanner_private.h::_LIGHTMEDIASCANNER_PRIVATE_H_" ref="c9783e2105f145aa71f541e0825707ed" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _LIGHTMEDIASCANNER_PRIVATE_H_&nbsp;&nbsp;&nbsp;1          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copyright (C) 2007 by INdT<p>
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00022">22</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner_private.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_NON_NULL          </td>
+          <td>(</td>
+          <td class="paramtype"> <em>...</em>&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00031">31</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="e78bf7e06bbba1c42b740fef55cf20f8"></a><!-- doxytag: member="lightmediascanner_private.h::PATH_SIZE" ref="e78bf7e06bbba1c42b740fef55cf20f8" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define PATH_SIZE&nbsp;&nbsp;&nbsp;PATH_MAX          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00042">42</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, and <a class="el" href="lightmediascanner__check_8c-source.html#l00949">lms_check_single_process()</a>.</p>
+
+</div>
+</div><p>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="818aa1ae6bb03151823bbd9b56bd0801"></a><!-- doxytag: member="lightmediascanner_private.h::check_row_callback_t" ref="818aa1ae6bb03151823bbd9b56bd0801" args=")(void *db_ptr, struct cinfo *info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int(* <a class="el" href="lightmediascanner__private_8h.html#818aa1ae6bb03151823bbd9b56bd0801">check_row_callback_t</a>)(void *db_ptr, struct <a class="el" href="structcinfo.html">cinfo</a> *info)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00093">93</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="ca9b2668fa08b18c630e16d1f7f702a7"></a><!-- doxytag: member="lightmediascanner_private.h::process_file_callback_t" ref="ca9b2668fa08b18c630e16d1f7f702a7" args=")(struct cinfo *info, int base, char *path, const char *name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int(* <a class="el" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">process_file_callback_t</a>)(struct <a class="el" href="structcinfo.html">cinfo</a> *info, int base, char *path, const char *name)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00092">92</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="8c1aa0a9d9bb796db279caeb97e04eed"></a><!-- doxytag: member="lightmediascanner_private.h::lms_close_pipes" ref="8c1aa0a9d9bb796db279caeb97e04eed" args="(struct pinfo *pinfo) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_close_pipes           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00596">596</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00057">pinfo::master</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00058">pinfo::slave</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01005">lms_process()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="a5952b7aae2fa795396a5a286c2ee4a4"></a><!-- doxytag: member="lightmediascanner_private.h::lms_create_pipes" ref="a5952b7aae2fa795396a5a286c2ee4a4" args="(struct pinfo *pinfo) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_create_pipes           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00607">607</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00057">pinfo::master</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00059">pinfo::poll</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00045">fds::r</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00058">pinfo::slave</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00046">fds::w</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01005">lms_process()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="439b3c62e96d472bdb2125a0a04d4fa6"></a><!-- doxytag: member="lightmediascanner_private.h::lms_create_slave" ref="439b3c62e96d472bdb2125a0a04d4fa6" args="(struct pinfo *pinfo, int(*work)(lms_t *lms, struct fds *fds)) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_create_slave           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int(*)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)&nbsp;</td>
+          <td class="paramname"> <em>work</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01005">lms_process()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00694">lms_restart_slave()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="dd3853bb333e8bee167477933a058ae5"></a><!-- doxytag: member="lightmediascanner_private.h::lms_finish_slave" ref="dd3853bb333e8bee167477933a058ae5" args="(struct pinfo *pinfo, int(*finish)(const struct fds *fds)) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int lms_finish_slave           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int(*)(const struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)&nbsp;</td>
+          <td class="paramname"> <em>finish</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01005">lms_process()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="239fc535d2f20f09eeec9df86aa6ef9b"></a><!-- doxytag: member="lightmediascanner_private.h::lms_parser_del_int" ref="239fc535d2f20f09eeec9df86aa6ef9b" args="(lms_t *lms, int i) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_parser_del_int           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>i</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00294">294</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00334">lms_parser_del()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="f92504ffd52b8b1d7d90b786af90d1ef"></a><!-- doxytag: member="lightmediascanner_private.h::lms_parsers_check_using" ref="f92504ffd52b8b1d7d90b786af90d1ef" args="(lms_t *lms, void **parser_match, struct lms_file_info *finfo) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int int int int lms_parsers_check_using           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>parser_match</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="74adcb264b3092f3ae9249de93f9130f"></a><!-- doxytag: member="lightmediascanner_private.h::lms_parsers_finish" ref="74adcb264b3092f3ae9249de93f9130f" args="(lms_t *lms, sqlite3 *db) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int int int lms_parsers_finish           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01047">lms_process_single_process()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="f61d9ef6ae2e576705bbd445db919e6c"></a><!-- doxytag: member="lightmediascanner_private.h::lms_parsers_run" ref="f61d9ef6ae2e576705bbd445db919e6c" args="(lms_t *lms, sqlite3 *db, void **parser_match, struct lms_file_info *finfo) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int int int int int lms_parsers_run           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>parser_match</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="028ef9d19863e8d0ebac1b84b1cb9174"></a><!-- doxytag: member="lightmediascanner_private.h::lms_parsers_setup" ref="028ef9d19863e8d0ebac1b84b1cb9174" args="(lms_t *lms, sqlite3 *db) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int lms_parsers_setup           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="2c1f40ac6080c682c2f71172cc76f7e0"></a><!-- doxytag: member="lightmediascanner_private.h::lms_parsers_start" ref="2c1f40ac6080c682c2f71172cc76f7e0" args="(lms_t *lms, sqlite3 *db) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int int lms_parsers_start           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="dd61370f42f0c32e3b9d5c86303c3c58"></a><!-- doxytag: member="lightmediascanner_private.h::lms_restart_slave" ref="dd61370f42f0c32e3b9d5c86303c3c58" args="(struct pinfo *pinfo, int(*work)(lms_t *lms, struct fds *fds)) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int lms_restart_slave           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int(*)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)&nbsp;</td>
+          <td class="paramname"> <em>work</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__private_8h__dep__incl.dot b/www/api/lightmediascanner__private_8h__dep__incl.dot
new file mode 100644 (file)
index 0000000..0b17483
--- /dev/null
@@ -0,0 +1,13 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_private.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="src/lib/lightmediascanner.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8c.html"];
+  Node1 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="src/lib/lightmediascanner_check.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__check_8c.html"];
+  Node1 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="src/lib/lightmediascanner_process.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__process_8c.html"];
+}
diff --git a/www/api/lightmediascanner__private_8h__dep__incl.md5 b/www/api/lightmediascanner__private_8h__dep__incl.md5
new file mode 100644 (file)
index 0000000..cb7c43a
--- /dev/null
@@ -0,0 +1 @@
+321c443a6793dc8fa261fafa2e6e818a
\ No newline at end of file
diff --git a/www/api/lightmediascanner__private_8h__incl.dot b/www/api/lightmediascanner__private_8h__incl.dot
new file mode 100644 (file)
index 0000000..660b232
--- /dev/null
@@ -0,0 +1,25 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_private.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lightmediascanner.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8h.html"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lightmediascanner_plugin.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__plugin_8h.html"];
+  Node3 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lightmediascanner_charset_conv.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__charset__conv_8h.html"];
+  Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="sqlite3.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="poll.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="limits.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}
diff --git a/www/api/lightmediascanner__private_8h__incl.md5 b/www/api/lightmediascanner__private_8h__incl.md5
new file mode 100644 (file)
index 0000000..9aa7650
--- /dev/null
@@ -0,0 +1 @@
+4c8a5273f93a6b473542884ff86f68fe
\ No newline at end of file
diff --git a/www/api/lightmediascanner__process_8c-source.html b/www/api/lightmediascanner__process_8c-source.html
new file mode 100644 (file)
index 0000000..f6fd8dc
--- /dev/null
@@ -0,0 +1,1078 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_process.c Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>src/lib/lightmediascanner_process.c</h1><a href="lightmediascanner__process_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifdef HAVE_CONFIG_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#include "config.h"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#endif</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span>
+<a name="l00025"></a><a class="code" href="lightmediascanner__process_8c.html#369266c24eacffb87046522897a570d5">00025</a> <span class="preprocessor">#define _GNU_SOURCE</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#include &lt;sys/wait.h&gt;</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;sys/stat.h&gt;</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;dirent.h&gt;</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;signal.h&gt;</span>
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;string.h&gt;</span>
+<a name="l00035"></a>00035 
+<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="lightmediascanner_8h.html">lightmediascanner.h</a>"</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__private_8h.html">lightmediascanner_private.h</a>"</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040 <span class="keyword">struct </span>db {
+<a name="l00041"></a>00041     sqlite3 *handle;
+<a name="l00042"></a>00042     sqlite3_stmt *transaction_begin;
+<a name="l00043"></a>00043     sqlite3_stmt *transaction_commit;
+<a name="l00044"></a>00044     sqlite3_stmt *get_file_info;
+<a name="l00045"></a>00045     sqlite3_stmt *insert_file_info;
+<a name="l00046"></a>00046     sqlite3_stmt *update_file_info;
+<a name="l00047"></a>00047     sqlite3_stmt *delete_file_info;
+<a name="l00048"></a>00048     sqlite3_stmt *set_file_dtime;
+<a name="l00049"></a>00049 };
+<a name="l00050"></a>00050 
+<a name="l00051"></a>00051 <span class="comment">/***********************************************************************</span>
+<a name="l00052"></a>00052 <span class="comment"> * Master-Slave communication.</span>
+<a name="l00053"></a>00053 <span class="comment"> ***********************************************************************/</span>
+<a name="l00054"></a>00054 
+<a name="l00055"></a>00055 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00056"></a>00056 _master_send_path(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *master, <span class="keywordtype">int</span> plen, <span class="keywordtype">int</span> dlen, <span class="keyword">const</span> <span class="keywordtype">char</span> *p)
+<a name="l00057"></a>00057 {
+<a name="l00058"></a>00058     <span class="keywordtype">int</span> lengths[2];
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060     lengths[0] = plen;
+<a name="l00061"></a>00061     lengths[1] = dlen;
+<a name="l00062"></a>00062 
+<a name="l00063"></a>00063     <span class="keywordflow">if</span> (write(master-&gt;<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, lengths, <span class="keyword">sizeof</span>(lengths)) &lt; 0) {
+<a name="l00064"></a>00064         perror(<span class="stringliteral">"write"</span>);
+<a name="l00065"></a>00065         <span class="keywordflow">return</span> -1;
+<a name="l00066"></a>00066     }
+<a name="l00067"></a>00067 
+<a name="l00068"></a>00068     <span class="keywordflow">if</span> (write(master-&gt;<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, p, plen) &lt; 0) {
+<a name="l00069"></a>00069         perror(<span class="stringliteral">"write"</span>);
+<a name="l00070"></a>00070         <span class="keywordflow">return</span> -1;
+<a name="l00071"></a>00071     }
+<a name="l00072"></a>00072 
+<a name="l00073"></a>00073     <span class="keywordflow">return</span> 0;
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075 
+<a name="l00076"></a>00076 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00077"></a>00077 _master_send_finish(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *master)
+<a name="l00078"></a>00078 {
+<a name="l00079"></a>00079     <span class="keyword">const</span> <span class="keywordtype">int</span> lengths[2] = {-1, -1};
+<a name="l00080"></a>00080 
+<a name="l00081"></a>00081     <span class="keywordflow">if</span> (write(master-&gt;<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, lengths, <span class="keyword">sizeof</span>(lengths)) &lt; 0) {
+<a name="l00082"></a>00082         perror(<span class="stringliteral">"write"</span>);
+<a name="l00083"></a>00083         <span class="keywordflow">return</span> -1;
+<a name="l00084"></a>00084     }
+<a name="l00085"></a>00085     <span class="keywordflow">return</span> 0;
+<a name="l00086"></a>00086 }
+<a name="l00087"></a>00087 
+<a name="l00088"></a>00088 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00089"></a>00089 _master_recv_reply(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *master, <span class="keyword">struct</span> pollfd *pfd, <span class="keywordtype">int</span> *reply, <span class="keywordtype">int</span> timeout)
+<a name="l00090"></a>00090 {
+<a name="l00091"></a>00091     <span class="keywordtype">int</span> r;
+<a name="l00092"></a>00092 
+<a name="l00093"></a>00093     r = poll(pfd, 1, timeout);
+<a name="l00094"></a>00094     <span class="keywordflow">if</span> (r &lt; 0) {
+<a name="l00095"></a>00095         perror(<span class="stringliteral">"poll"</span>);
+<a name="l00096"></a>00096         <span class="keywordflow">return</span> -1;
+<a name="l00097"></a>00097     }
+<a name="l00098"></a>00098 
+<a name="l00099"></a>00099     <span class="keywordflow">if</span> (r == 0)
+<a name="l00100"></a>00100         <span class="keywordflow">return</span> 1;
+<a name="l00101"></a>00101 
+<a name="l00102"></a>00102     <span class="keywordflow">if</span> (read(master-&gt;<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>, reply, <span class="keyword">sizeof</span>(*reply)) != <span class="keyword">sizeof</span>(*reply)) {
+<a name="l00103"></a>00103         perror(<span class="stringliteral">"read"</span>);
+<a name="l00104"></a>00104         <span class="keywordflow">return</span> -2;
+<a name="l00105"></a>00105     }
+<a name="l00106"></a>00106 
+<a name="l00107"></a>00107     <span class="keywordflow">return</span> 0;
+<a name="l00108"></a>00108 }
+<a name="l00109"></a>00109 
+<a name="l00110"></a>00110 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00111"></a>00111 _slave_send_reply(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *slave, <span class="keywordtype">int</span> reply)
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113     <span class="keywordflow">if</span> (write(slave-&gt;<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, &amp;reply, <span class="keyword">sizeof</span>(reply)) == 0) {
+<a name="l00114"></a>00114         perror(<span class="stringliteral">"write"</span>);
+<a name="l00115"></a>00115         <span class="keywordflow">return</span> -1;
+<a name="l00116"></a>00116     }
+<a name="l00117"></a>00117     <span class="keywordflow">return</span> 0;
+<a name="l00118"></a>00118 }
+<a name="l00119"></a>00119 
+<a name="l00120"></a>00120 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00121"></a>00121 _slave_recv_path(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *slave, <span class="keywordtype">int</span> *plen, <span class="keywordtype">int</span> *dlen, <span class="keywordtype">char</span> *path)
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123     <span class="keywordtype">int</span> lengths[2], r;
+<a name="l00124"></a>00124 
+<a name="l00125"></a>00125     r = read(slave-&gt;<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>, lengths, <span class="keyword">sizeof</span>(lengths));
+<a name="l00126"></a>00126     <span class="keywordflow">if</span> (r != <span class="keyword">sizeof</span>(lengths)) {
+<a name="l00127"></a>00127         perror(<span class="stringliteral">"read"</span>);
+<a name="l00128"></a>00128         <span class="keywordflow">return</span> -1;
+<a name="l00129"></a>00129     }
+<a name="l00130"></a>00130     *plen = lengths[0];
+<a name="l00131"></a>00131     *dlen = lengths[1];
+<a name="l00132"></a>00132 
+<a name="l00133"></a>00133     <span class="keywordflow">if</span> (*plen == -1)
+<a name="l00134"></a>00134         <span class="keywordflow">return</span> 0;
+<a name="l00135"></a>00135 
+<a name="l00136"></a>00136     <span class="keywordflow">if</span> (*plen &gt; <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>) {
+<a name="l00137"></a>00137         fprintf(stderr, <span class="stringliteral">"ERROR: path too long (%d/%d)\n"</span>, *plen, <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>);
+<a name="l00138"></a>00138         <span class="keywordflow">return</span> -2;
+<a name="l00139"></a>00139     }
+<a name="l00140"></a>00140 
+<a name="l00141"></a>00141     r = read(slave-&gt;<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>, path, *plen);
+<a name="l00142"></a>00142     <span class="keywordflow">if</span> (r != *plen) {
+<a name="l00143"></a>00143         fprintf(stderr, <span class="stringliteral">"ERROR: could not read whole path %d/%d\n"</span>, r, *plen);
+<a name="l00144"></a>00144         <span class="keywordflow">return</span> -3;
+<a name="l00145"></a>00145     }
+<a name="l00146"></a>00146 
+<a name="l00147"></a>00147     path[*plen] = 0;
+<a name="l00148"></a>00148     <span class="keywordflow">return</span> 0;
+<a name="l00149"></a>00149 }
+<a name="l00150"></a>00150 
+<a name="l00151"></a>00151 
+<a name="l00152"></a>00152 <span class="comment">/***********************************************************************</span>
+<a name="l00153"></a>00153 <span class="comment"> * Slave-side.</span>
+<a name="l00154"></a>00154 <span class="comment"> ***********************************************************************/</span>
+<a name="l00155"></a>00155 
+<a name="l00156"></a>00156 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00157"></a>00157 _db_compile_all_stmts(<span class="keyword">struct</span> db *db)
+<a name="l00158"></a>00158 {
+<a name="l00159"></a>00159     sqlite3 *handle;
+<a name="l00160"></a>00160 
+<a name="l00161"></a>00161     handle = db-&gt;handle;
+<a name="l00162"></a>00162     db-&gt;transaction_begin = <a class="code" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lms_db_compile_stmt_begin_transaction</a>(handle);
+<a name="l00163"></a>00163     <span class="keywordflow">if</span> (!db-&gt;transaction_begin)
+<a name="l00164"></a>00164         <span class="keywordflow">return</span> -1;
+<a name="l00165"></a>00165 
+<a name="l00166"></a>00166     db-&gt;transaction_commit = <a class="code" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lms_db_compile_stmt_end_transaction</a>(handle);
+<a name="l00167"></a>00167     <span class="keywordflow">if</span> (!db-&gt;transaction_commit)
+<a name="l00168"></a>00168         <span class="keywordflow">return</span> -2;
+<a name="l00169"></a>00169 
+<a name="l00170"></a>00170     db-&gt;get_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#b00a624bc01da9b796f7bc6e1d507cf8">lms_db_compile_stmt_get_file_info</a>(handle);
+<a name="l00171"></a>00171     <span class="keywordflow">if</span> (!db-&gt;get_file_info)
+<a name="l00172"></a>00172         <span class="keywordflow">return</span> -4;
+<a name="l00173"></a>00173 
+<a name="l00174"></a>00174     db-&gt;insert_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#9a5886e755eb428ac811956144eee0dc">lms_db_compile_stmt_insert_file_info</a>(handle);
+<a name="l00175"></a>00175     <span class="keywordflow">if</span> (!db-&gt;insert_file_info)
+<a name="l00176"></a>00176         <span class="keywordflow">return</span> -5;
+<a name="l00177"></a>00177 
+<a name="l00178"></a>00178     db-&gt;update_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lms_db_compile_stmt_update_file_info</a>(handle);
+<a name="l00179"></a>00179     <span class="keywordflow">if</span> (!db-&gt;update_file_info)
+<a name="l00180"></a>00180         <span class="keywordflow">return</span> -6;
+<a name="l00181"></a>00181 
+<a name="l00182"></a>00182     db-&gt;delete_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lms_db_compile_stmt_delete_file_info</a>(handle);
+<a name="l00183"></a>00183     <span class="keywordflow">if</span> (!db-&gt;delete_file_info)
+<a name="l00184"></a>00184         <span class="keywordflow">return</span> -6;
+<a name="l00185"></a>00185 
+<a name="l00186"></a>00186     db-&gt;set_file_dtime = <a class="code" href="lightmediascanner__db__common_8c.html#1b6950ca9e548670a4cb7fd0ec5220a8">lms_db_compile_stmt_set_file_dtime</a>(handle);
+<a name="l00187"></a>00187     <span class="keywordflow">if</span> (!db-&gt;set_file_dtime)
+<a name="l00188"></a>00188         <span class="keywordflow">return</span> -7;
+<a name="l00189"></a>00189 
+<a name="l00190"></a>00190     <span class="keywordflow">return</span> 0;
+<a name="l00191"></a>00191 }
+<a name="l00192"></a>00192 
+<a name="l00193"></a>00193 <span class="keyword">static</span> <span class="keyword">struct </span>db *
+<a name="l00194"></a>00194 _db_open(<span class="keyword">const</span> <span class="keywordtype">char</span> *db_path)
+<a name="l00195"></a>00195 {
+<a name="l00196"></a>00196     <span class="keyword">struct </span>db *db;
+<a name="l00197"></a>00197 
+<a name="l00198"></a>00198     db = calloc(1, <span class="keyword">sizeof</span>(*db));
+<a name="l00199"></a>00199     <span class="keywordflow">if</span> (!db) {
+<a name="l00200"></a>00200         perror(<span class="stringliteral">"calloc"</span>);
+<a name="l00201"></a>00201         <span class="keywordflow">return</span> NULL;
+<a name="l00202"></a>00202     }
+<a name="l00203"></a>00203 
+<a name="l00204"></a>00204     <span class="keywordflow">if</span> (sqlite3_open(db_path, &amp;db-&gt;handle) != SQLITE_OK) {
+<a name="l00205"></a>00205         fprintf(stderr, <span class="stringliteral">"ERROR: could not open DB \"%s\": %s\n"</span>,
+<a name="l00206"></a>00206                 db_path, sqlite3_errmsg(db-&gt;handle));
+<a name="l00207"></a>00207         <span class="keywordflow">goto</span> error;
+<a name="l00208"></a>00208     }
+<a name="l00209"></a>00209 
+<a name="l00210"></a>00210     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lms_db_create_core_tables_if_required</a>(db-&gt;handle) != 0) {
+<a name="l00211"></a>00211         fprintf(stderr, <span class="stringliteral">"ERROR: could not setup tables and indexes.\n"</span>);
+<a name="l00212"></a>00212         <span class="keywordflow">goto</span> error;
+<a name="l00213"></a>00213     }
+<a name="l00214"></a>00214 
+<a name="l00215"></a>00215     <span class="keywordflow">return</span> db;
+<a name="l00216"></a>00216 
+<a name="l00217"></a>00217   error:
+<a name="l00218"></a>00218     sqlite3_close(db-&gt;handle);
+<a name="l00219"></a>00219     free(db);
+<a name="l00220"></a>00220     <span class="keywordflow">return</span> NULL;
+<a name="l00221"></a>00221 }
+<a name="l00222"></a>00222 
+<a name="l00223"></a>00223 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00224"></a>00224 _db_close(<span class="keyword">struct</span> db *db)
+<a name="l00225"></a>00225 {
+<a name="l00226"></a>00226     <span class="keywordflow">if</span> (db-&gt;transaction_begin)
+<a name="l00227"></a>00227         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;transaction_begin, <span class="stringliteral">"transaction_begin"</span>);
+<a name="l00228"></a>00228 
+<a name="l00229"></a>00229     <span class="keywordflow">if</span> (db-&gt;transaction_commit)
+<a name="l00230"></a>00230         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;transaction_commit, <span class="stringliteral">"transaction_commit"</span>);
+<a name="l00231"></a>00231 
+<a name="l00232"></a>00232     <span class="keywordflow">if</span> (db-&gt;get_file_info)
+<a name="l00233"></a>00233         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;get_file_info, <span class="stringliteral">"get_file_info"</span>);
+<a name="l00234"></a>00234 
+<a name="l00235"></a>00235     <span class="keywordflow">if</span> (db-&gt;insert_file_info)
+<a name="l00236"></a>00236         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;insert_file_info, <span class="stringliteral">"insert_file_info"</span>);
+<a name="l00237"></a>00237 
+<a name="l00238"></a>00238     <span class="keywordflow">if</span> (db-&gt;update_file_info)
+<a name="l00239"></a>00239         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;update_file_info, <span class="stringliteral">"update_file_info"</span>);
+<a name="l00240"></a>00240 
+<a name="l00241"></a>00241     <span class="keywordflow">if</span> (db-&gt;delete_file_info)
+<a name="l00242"></a>00242         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;delete_file_info, <span class="stringliteral">"delete_file_info"</span>);
+<a name="l00243"></a>00243 
+<a name="l00244"></a>00244     <span class="keywordflow">if</span> (db-&gt;set_file_dtime)
+<a name="l00245"></a>00245         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;set_file_dtime, <span class="stringliteral">"set_file_dtime"</span>);
+<a name="l00246"></a>00246 
+<a name="l00247"></a>00247     <span class="keywordflow">if</span> (sqlite3_close(db-&gt;handle) != SQLITE_OK) {
+<a name="l00248"></a>00248         fprintf(stderr, <span class="stringliteral">"ERROR: clould not close DB: %s\n"</span>,
+<a name="l00249"></a>00249                 sqlite3_errmsg(db-&gt;handle));
+<a name="l00250"></a>00250         <span class="keywordflow">return</span> -1;
+<a name="l00251"></a>00251     }
+<a name="l00252"></a>00252     free(db);
+<a name="l00253"></a>00253 
+<a name="l00254"></a>00254     <span class="keywordflow">return</span> 0;
+<a name="l00255"></a>00255 }
+<a name="l00256"></a>00256 
+<a name="l00257"></a>00257 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00258"></a>00258 _retrieve_file_status(<span class="keyword">struct</span> db *db, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
+<a name="l00259"></a>00259 {
+<a name="l00260"></a>00260     <span class="keyword">struct </span>stat st;
+<a name="l00261"></a>00261     <span class="keywordtype">int</span> r;
+<a name="l00262"></a>00262 
+<a name="l00263"></a>00263     <span class="keywordflow">if</span> (stat(finfo-&gt;<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, &amp;st) != 0) {
+<a name="l00264"></a>00264         perror(<span class="stringliteral">"stat"</span>);
+<a name="l00265"></a>00265         <span class="keywordflow">return</span> -1;
+<a name="l00266"></a>00266     }
+<a name="l00267"></a>00267 
+<a name="l00268"></a>00268     r = <a class="code" href="lightmediascanner__db__common_8c.html#c0b7cf0b2eb0f55fbf8a4103bc9569d1">lms_db_get_file_info</a>(db-&gt;get_file_info, finfo);
+<a name="l00269"></a>00269     <span class="keywordflow">if</span> (r == 0) {
+<a name="l00270"></a>00270         <span class="keywordflow">if</span> (st.st_mtime &lt;= finfo-&gt;<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> &amp;&amp; finfo-&gt;<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> == st.st_size)
+<a name="l00271"></a>00271             <span class="keywordflow">return</span> 0;
+<a name="l00272"></a>00272         <span class="keywordflow">else</span> {
+<a name="l00273"></a>00273             finfo-&gt;<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = st.st_mtime;
+<a name="l00274"></a>00274             finfo-&gt;<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = st.st_size;
+<a name="l00275"></a>00275             <span class="keywordflow">return</span> 1;
+<a name="l00276"></a>00276         }
+<a name="l00277"></a>00277     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r == 1) {
+<a name="l00278"></a>00278         finfo-&gt;<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = st.st_mtime;
+<a name="l00279"></a>00279         finfo-&gt;<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = st.st_size;
+<a name="l00280"></a>00280         <span class="keywordflow">return</span> 1;
+<a name="l00281"></a>00281     } <span class="keywordflow">else</span>
+<a name="l00282"></a>00282         <span class="keywordflow">return</span> -2;
+<a name="l00283"></a>00283 }
+<a name="l00284"></a>00284 
+<a name="l00285"></a>00285 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00286"></a>00286 _ctxt_init(<span class="keyword">struct</span> <a class="code" href="structlms__context.html">lms_context</a> *ctxt, <span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db)
+<a name="l00287"></a>00287 {
+<a name="l00288"></a>00288     ctxt-&gt;<a class="code" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">cs_conv</a> = lms-&gt;<a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>;
+<a name="l00289"></a>00289     ctxt-&gt;<a class="code" href="structlms__context.html#310d38a2fab9ecea67601d0c6a3d8d81">db</a> = db;
+<a name="l00290"></a>00290 }
+<a name="l00291"></a>00291 
+<a name="l00292"></a>00292 <span class="keywordtype">int</span>
+<a name="l00293"></a><a class="code" href="lightmediascanner__process_8c.html#c321bebfc5c24cbbac30031202c460e9">00293</a> <a class="code" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lms_parsers_setup</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db)
+<a name="l00294"></a>00294 {
+<a name="l00295"></a>00295     <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> ctxt;
+<a name="l00296"></a>00296     <span class="keywordtype">int</span> i;
+<a name="l00297"></a>00297 
+<a name="l00298"></a>00298     _ctxt_init(&amp;ctxt, lms, db);
+<a name="l00299"></a>00299 
+<a name="l00300"></a>00300     <span class="keywordflow">for</span> (i = 0; i &lt; lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>; i++) {
+<a name="l00301"></a>00301         <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *plugin;
+<a name="l00302"></a>00302         <span class="keywordtype">int</span> r;
+<a name="l00303"></a>00303 
+<a name="l00304"></a>00304         plugin = lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>[i].<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>;
+<a name="l00305"></a>00305         r = plugin-&gt;<a class="code" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">setup</a>(plugin, &amp;ctxt);
+<a name="l00306"></a>00306         <span class="keywordflow">if</span> (r != 0) {
+<a name="l00307"></a>00307             fprintf(stderr, <span class="stringliteral">"ERROR: parser \"%s\" failed to setup: %d.\n"</span>,
+<a name="l00308"></a>00308                     plugin-&gt;<a class="code" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">name</a>, r);
+<a name="l00309"></a>00309             plugin-&gt;<a class="code" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">finish</a>(plugin, &amp;ctxt);
+<a name="l00310"></a>00310             <a class="code" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lms_parser_del_int</a>(lms, i);
+<a name="l00311"></a>00311             i--; <span class="comment">/* cancel i++ */</span>
+<a name="l00312"></a>00312         }
+<a name="l00313"></a>00313     }
+<a name="l00314"></a>00314 
+<a name="l00315"></a>00315     <span class="keywordflow">return</span> 0;
+<a name="l00316"></a>00316 }
+<a name="l00317"></a>00317 
+<a name="l00318"></a>00318 <span class="keywordtype">int</span>
+<a name="l00319"></a><a class="code" href="lightmediascanner__process_8c.html#6e02f78f026b2ad282184476dca13e45">00319</a> <a class="code" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lms_parsers_start</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db)
+<a name="l00320"></a>00320 {
+<a name="l00321"></a>00321     <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> ctxt;
+<a name="l00322"></a>00322     <span class="keywordtype">int</span> i;
+<a name="l00323"></a>00323 
+<a name="l00324"></a>00324     _ctxt_init(&amp;ctxt, lms, db);
+<a name="l00325"></a>00325 
+<a name="l00326"></a>00326     <span class="keywordflow">for</span> (i = 0; i &lt; lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>; i++) {
+<a name="l00327"></a>00327         <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *plugin;
+<a name="l00328"></a>00328         <span class="keywordtype">int</span> r;
+<a name="l00329"></a>00329 
+<a name="l00330"></a>00330         plugin = lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>[i].<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>;
+<a name="l00331"></a>00331         r = plugin-&gt;<a class="code" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">start</a>(plugin, &amp;ctxt);
+<a name="l00332"></a>00332         <span class="keywordflow">if</span> (r != 0) {
+<a name="l00333"></a>00333             fprintf(stderr, <span class="stringliteral">"ERROR: parser \"%s\" failed to start: %d.\n"</span>,
+<a name="l00334"></a>00334                     plugin-&gt;<a class="code" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">name</a>, r);
+<a name="l00335"></a>00335             plugin-&gt;<a class="code" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">finish</a>(plugin, &amp;ctxt);
+<a name="l00336"></a>00336             <a class="code" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lms_parser_del_int</a>(lms, i);
+<a name="l00337"></a>00337             i--; <span class="comment">/* cancel i++ */</span>
+<a name="l00338"></a>00338         }
+<a name="l00339"></a>00339     }
+<a name="l00340"></a>00340 
+<a name="l00341"></a>00341     <span class="keywordflow">return</span> 0;
+<a name="l00342"></a>00342 }
+<a name="l00343"></a>00343 
+<a name="l00344"></a>00344 <span class="keywordtype">int</span>
+<a name="l00345"></a><a class="code" href="lightmediascanner__process_8c.html#d002464442b08826a1da920bdf4957b7">00345</a> <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db)
+<a name="l00346"></a>00346 {
+<a name="l00347"></a>00347     <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> ctxt;
+<a name="l00348"></a>00348     <span class="keywordtype">int</span> i;
+<a name="l00349"></a>00349 
+<a name="l00350"></a>00350     _ctxt_init(&amp;ctxt, lms, db);
+<a name="l00351"></a>00351 
+<a name="l00352"></a>00352     <span class="keywordflow">for</span> (i = 0; i &lt; lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>; i++) {
+<a name="l00353"></a>00353         <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *plugin;
+<a name="l00354"></a>00354         <span class="keywordtype">int</span> r;
+<a name="l00355"></a>00355 
+<a name="l00356"></a>00356         plugin = lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>[i].<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>;
+<a name="l00357"></a>00357         r = plugin-&gt;<a class="code" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">finish</a>(plugin, &amp;ctxt);
+<a name="l00358"></a>00358         <span class="keywordflow">if</span> (r != 0)
+<a name="l00359"></a>00359             fprintf(stderr, <span class="stringliteral">"ERROR: parser \"%s\" failed to finish: %d.\n"</span>,
+<a name="l00360"></a>00360                     plugin-&gt;<a class="code" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">name</a>, r);
+<a name="l00361"></a>00361     }
+<a name="l00362"></a>00362 
+<a name="l00363"></a>00363     <span class="keywordflow">return</span> 0;
+<a name="l00364"></a>00364 }
+<a name="l00365"></a>00365 
+<a name="l00366"></a>00366 <span class="keywordtype">int</span>
+<a name="l00367"></a><a class="code" href="lightmediascanner__process_8c.html#f2e95cea50ce24774d2f5ed7d8c8f41c">00367</a> <a class="code" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lms_parsers_check_using</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">void</span> **parser_match, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
+<a name="l00368"></a>00368 {
+<a name="l00369"></a>00369     <span class="keywordtype">int</span> used, i;
+<a name="l00370"></a>00370 
+<a name="l00371"></a>00371     used = 0;
+<a name="l00372"></a>00372     <span class="keywordflow">for</span> (i = 0; i &lt; lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>; i++) {
+<a name="l00373"></a>00373         <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *plugin;
+<a name="l00374"></a>00374         <span class="keywordtype">void</span> *r;
+<a name="l00375"></a>00375 
+<a name="l00376"></a>00376         plugin = lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>[i].<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>;
+<a name="l00377"></a>00377         r = plugin-&gt;<a class="code" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">match</a>(plugin, finfo-&gt;<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, finfo-&gt;<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>, finfo-&gt;<a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a>);
+<a name="l00378"></a>00378         parser_match[i] = r;
+<a name="l00379"></a>00379         <span class="keywordflow">if</span> (r)
+<a name="l00380"></a>00380             used = 1;
+<a name="l00381"></a>00381     }
+<a name="l00382"></a>00382 
+<a name="l00383"></a>00383     <span class="keywordflow">return</span> used;
+<a name="l00384"></a>00384 }
+<a name="l00385"></a>00385 
+<a name="l00386"></a>00386 <span class="keywordtype">int</span>
+<a name="l00387"></a><a class="code" href="lightmediascanner__process_8c.html#4ab78dfbf29822d91472d18dd7424e77">00387</a> <a class="code" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db, <span class="keywordtype">void</span> **parser_match, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
+<a name="l00388"></a>00388 {
+<a name="l00389"></a>00389     <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> ctxt;
+<a name="l00390"></a>00390     <span class="keywordtype">int</span> i, failed, available;
+<a name="l00391"></a>00391 
+<a name="l00392"></a>00392     _ctxt_init(&amp;ctxt, lms, db);
+<a name="l00393"></a>00393 
+<a name="l00394"></a>00394     failed = 0;
+<a name="l00395"></a>00395     available = 0;
+<a name="l00396"></a>00396     <span class="keywordflow">for</span> (i = 0; i &lt; lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>; i++) {
+<a name="l00397"></a>00397         <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *plugin;
+<a name="l00398"></a>00398 
+<a name="l00399"></a>00399         plugin = lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>[i].<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>;
+<a name="l00400"></a>00400         <span class="keywordflow">if</span> (parser_match[i]) {
+<a name="l00401"></a>00401             <span class="keywordtype">int</span> r;
+<a name="l00402"></a>00402 
+<a name="l00403"></a>00403             available++;
+<a name="l00404"></a>00404             r = plugin-&gt;<a class="code" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">parse</a>(plugin, &amp;ctxt, finfo, parser_match[i]);
+<a name="l00405"></a>00405             <span class="keywordflow">if</span> (r != 0)
+<a name="l00406"></a>00406                 failed++;
+<a name="l00407"></a>00407         }
+<a name="l00408"></a>00408     }
+<a name="l00409"></a>00409 
+<a name="l00410"></a>00410     <span class="keywordflow">if</span> (!failed)
+<a name="l00411"></a>00411         <span class="keywordflow">return</span> 0;
+<a name="l00412"></a>00412     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (failed == available)
+<a name="l00413"></a>00413         <span class="keywordflow">return</span> -1;
+<a name="l00414"></a>00414     <span class="keywordflow">else</span>
+<a name="l00415"></a>00415         <span class="keywordflow">return</span> 1; <span class="comment">/* non critical */</span>
+<a name="l00416"></a>00416 }
+<a name="l00417"></a>00417 
+<a name="l00418"></a>00418 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00419"></a>00419 _db_and_parsers_setup(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">struct</span> db **db_ret, <span class="keywordtype">void</span> ***parser_match_ret)
+<a name="l00420"></a>00420 {
+<a name="l00421"></a>00421     <span class="keywordtype">void</span> **parser_match;
+<a name="l00422"></a>00422     <span class="keyword">struct </span>db *db;
+<a name="l00423"></a>00423     <span class="keywordtype">int</span> r = 0;
+<a name="l00424"></a>00424 
+<a name="l00425"></a>00425     db = _db_open(lms-&gt;<a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>);
+<a name="l00426"></a>00426     <span class="keywordflow">if</span> (!db) {
+<a name="l00427"></a>00427         r = -1;
+<a name="l00428"></a>00428         <span class="keywordflow">return</span> r;
+<a name="l00429"></a>00429     }
+<a name="l00430"></a>00430 
+<a name="l00431"></a>00431     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lms_parsers_setup</a>(lms, db-&gt;handle) != 0) {
+<a name="l00432"></a>00432         fprintf(stderr, <span class="stringliteral">"ERROR: could not setup parsers.\n"</span>);
+<a name="l00433"></a>00433         r = -2;
+<a name="l00434"></a>00434         <span class="keywordflow">goto</span> err;
+<a name="l00435"></a>00435     }
+<a name="l00436"></a>00436 
+<a name="l00437"></a>00437     <span class="keywordflow">if</span> (_db_compile_all_stmts(db) != 0) {
+<a name="l00438"></a>00438         fprintf(stderr, <span class="stringliteral">"ERROR: could not compile statements.\n"</span>);
+<a name="l00439"></a>00439         r = -3;
+<a name="l00440"></a>00440         <span class="keywordflow">goto</span> err;
+<a name="l00441"></a>00441     }
+<a name="l00442"></a>00442 
+<a name="l00443"></a>00443     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lms_parsers_start</a>(lms, db-&gt;handle) != 0) {
+<a name="l00444"></a>00444         fprintf(stderr, <span class="stringliteral">"ERROR: could not start parsers.\n"</span>);
+<a name="l00445"></a>00445         r = -4;
+<a name="l00446"></a>00446         <span class="keywordflow">goto</span> err;
+<a name="l00447"></a>00447     }
+<a name="l00448"></a>00448     <span class="keywordflow">if</span> (lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> &lt; 1) {
+<a name="l00449"></a>00449         fprintf(stderr, <span class="stringliteral">"ERROR: no parser could be started, exit.\n"</span>);
+<a name="l00450"></a>00450         r = -5;
+<a name="l00451"></a>00451         <span class="keywordflow">goto</span> err;
+<a name="l00452"></a>00452     }
+<a name="l00453"></a>00453 
+<a name="l00454"></a>00454     parser_match = malloc(lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> * <span class="keyword">sizeof</span>(*parser_match));
+<a name="l00455"></a>00455     <span class="keywordflow">if</span> (!parser_match) {
+<a name="l00456"></a>00456         perror(<span class="stringliteral">"malloc"</span>);
+<a name="l00457"></a>00457         r = -6;
+<a name="l00458"></a>00458         <span class="keywordflow">goto</span> err;
+<a name="l00459"></a>00459     }
+<a name="l00460"></a>00460 
+<a name="l00461"></a>00461     *parser_match_ret = parser_match;
+<a name="l00462"></a>00462     *db_ret = db;
+<a name="l00463"></a>00463     <span class="keywordflow">return</span> r;
+<a name="l00464"></a>00464 
+<a name="l00465"></a>00465   err:
+<a name="l00466"></a>00466     <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(lms, db-&gt;handle);
+<a name="l00467"></a>00467     _db_close(db);
+<a name="l00468"></a>00468     <span class="keywordflow">return</span> r;
+<a name="l00469"></a>00469 }
+<a name="l00470"></a>00470 
+<a name="l00471"></a>00471 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00472"></a>00472 _db_and_parsers_process_file(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">struct</span> db *db, <span class="keywordtype">void</span> **parser_match, <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> path_len, <span class="keywordtype">int</span> path_base)
+<a name="l00473"></a>00473 {
+<a name="l00474"></a>00474     <span class="keyword">struct </span><a class="code" href="structlms__file__info.html">lms_file_info</a> finfo;
+<a name="l00475"></a>00475     <span class="keywordtype">int</span> used, r;
+<a name="l00476"></a>00476 
+<a name="l00477"></a>00477     finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a> = path;
+<a name="l00478"></a>00478     finfo.<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> = path_len;
+<a name="l00479"></a>00479     finfo.<a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a> = path_base;
+<a name="l00480"></a>00480 
+<a name="l00481"></a>00481     r = _retrieve_file_status(db, &amp;finfo);
+<a name="l00482"></a>00482     <span class="keywordflow">if</span> (r == 0) {
+<a name="l00483"></a>00483         <span class="keywordflow">if</span> (finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>) {
+<a name="l00484"></a>00484             finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = 0;
+<a name="l00485"></a>00485             <a class="code" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">lms_db_set_file_dtime</a>(db-&gt;set_file_dtime, &amp;finfo);
+<a name="l00486"></a>00486         }
+<a name="l00487"></a>00487         <span class="keywordflow">return</span> r;
+<a name="l00488"></a>00488     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r &lt; 0) {
+<a name="l00489"></a>00489         fprintf(stderr, <span class="stringliteral">"ERROR: could not detect file status.\n"</span>);
+<a name="l00490"></a>00490         <span class="keywordflow">return</span> r;
+<a name="l00491"></a>00491     }
+<a name="l00492"></a>00492 
+<a name="l00493"></a>00493     used = <a class="code" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lms_parsers_check_using</a>(lms, parser_match, &amp;finfo);
+<a name="l00494"></a>00494     <span class="keywordflow">if</span> (!used)
+<a name="l00495"></a>00495         <span class="keywordflow">return</span> 2;
+<a name="l00496"></a>00496 
+<a name="l00497"></a>00497     finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = 0;
+<a name="l00498"></a>00498     <span class="keywordflow">if</span> (finfo.<a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> &gt; 0)
+<a name="l00499"></a>00499         r = <a class="code" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lms_db_update_file_info</a>(db-&gt;update_file_info, &amp;finfo);
+<a name="l00500"></a>00500     <span class="keywordflow">else</span>
+<a name="l00501"></a>00501         r = <a class="code" href="lightmediascanner__db__common_8c.html#e529ad5c4478d53685c65ec69dc5b1f4">lms_db_insert_file_info</a>(db-&gt;insert_file_info, &amp;finfo);
+<a name="l00502"></a>00502     <span class="keywordflow">if</span> (r &lt; 0) {
+<a name="l00503"></a>00503         fprintf(stderr, <span class="stringliteral">"ERROR: could not register path in DB\n"</span>);
+<a name="l00504"></a>00504         <span class="keywordflow">return</span> r;
+<a name="l00505"></a>00505     }
+<a name="l00506"></a>00506 
+<a name="l00507"></a>00507     r = <a class="code" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a>(lms, db-&gt;handle, parser_match, &amp;finfo);
+<a name="l00508"></a>00508     <span class="keywordflow">if</span> (r &lt; 0) {
+<a name="l00509"></a>00509         fprintf(stderr, <span class="stringliteral">"ERROR: pid=%d failed to parse \"%s\".\n"</span>,
+<a name="l00510"></a>00510                 getpid(), finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>);
+<a name="l00511"></a>00511         <a class="code" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lms_db_delete_file_info</a>(db-&gt;delete_file_info, &amp;finfo);
+<a name="l00512"></a>00512     }
+<a name="l00513"></a>00513 
+<a name="l00514"></a>00514     <span class="keywordflow">return</span> r;
+<a name="l00515"></a>00515 }
+<a name="l00516"></a>00516 
+<a name="l00517"></a>00517 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00518"></a>00518 _slave_work(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>)
+<a name="l00519"></a>00519 {
+<a name="l00520"></a>00520     <span class="keywordtype">int</span> r, len, <a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a>, counter;
+<a name="l00521"></a>00521     <span class="keywordtype">char</span> path[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>];
+<a name="l00522"></a>00522     <span class="keywordtype">void</span> **parser_match;
+<a name="l00523"></a>00523     <span class="keyword">struct </span>db *db;
+<a name="l00524"></a>00524 
+<a name="l00525"></a>00525     r = _db_and_parsers_setup(lms, &amp;db, &amp;parser_match);
+<a name="l00526"></a>00526     <span class="keywordflow">if</span> (r &lt; 0)
+<a name="l00527"></a>00527         <span class="keywordflow">return</span> r;
+<a name="l00528"></a>00528 
+<a name="l00529"></a>00529     counter = 0;
+<a name="l00530"></a>00530     <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db-&gt;transaction_begin);
+<a name="l00531"></a>00531 
+<a name="l00532"></a>00532     <span class="keywordflow">while</span> (((r = _slave_recv_path(fds, &amp;len, &amp;base, path)) == 0) &amp;&amp; len &gt; 0) {
+<a name="l00533"></a>00533         r = _db_and_parsers_process_file(
+<a name="l00534"></a>00534             lms, db, parser_match, path, len, base);
+<a name="l00535"></a>00535 
+<a name="l00536"></a>00536         _slave_send_reply(fds, r);
+<a name="l00537"></a>00537         counter++;
+<a name="l00538"></a>00538         <span class="keywordflow">if</span> (counter &gt; lms-&gt;<a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a>) {
+<a name="l00539"></a>00539             <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db-&gt;transaction_commit);
+<a name="l00540"></a>00540             <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db-&gt;transaction_begin);
+<a name="l00541"></a>00541             counter = 0;
+<a name="l00542"></a>00542         }
+<a name="l00543"></a>00543     }
+<a name="l00544"></a>00544 
+<a name="l00545"></a>00545     free(parser_match);
+<a name="l00546"></a>00546     <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db-&gt;transaction_commit);
+<a name="l00547"></a>00547     <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(lms, db-&gt;handle);
+<a name="l00548"></a>00548     _db_close(db);
+<a name="l00549"></a>00549 
+<a name="l00550"></a>00550     <span class="keywordflow">return</span> r;
+<a name="l00551"></a>00551 }
+<a name="l00552"></a>00552 
+<a name="l00553"></a>00553 
+<a name="l00554"></a>00554 <span class="comment">/***********************************************************************</span>
+<a name="l00555"></a>00555 <span class="comment"> * Master-side.</span>
+<a name="l00556"></a>00556 <span class="comment"> ***********************************************************************/</span>
+<a name="l00557"></a>00557 
+<a name="l00558"></a>00558 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00559"></a>00559 _consume_garbage(<span class="keyword">struct</span> pollfd *pfd)
+<a name="l00560"></a>00560 {
+<a name="l00561"></a>00561     <span class="keywordtype">int</span> r;
+<a name="l00562"></a>00562 
+<a name="l00563"></a>00563     <span class="keywordflow">while</span> ((r = poll(pfd, 1, 0)) &gt; 0) {
+<a name="l00564"></a>00564         <span class="keywordflow">if</span> (pfd-&gt;revents &amp; (POLLERR | POLLHUP | POLLNVAL))
+<a name="l00565"></a>00565             <span class="keywordflow">return</span> 0;
+<a name="l00566"></a>00566         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pfd-&gt;revents &amp; POLLIN) {
+<a name="l00567"></a>00567             <span class="keywordtype">char</span> c;
+<a name="l00568"></a>00568 
+<a name="l00569"></a>00569             read(pfd-&gt;fd, &amp;c, <span class="keyword">sizeof</span>(c));
+<a name="l00570"></a>00570         }
+<a name="l00571"></a>00571     }
+<a name="l00572"></a>00572 
+<a name="l00573"></a>00573     <span class="keywordflow">return</span> r;
+<a name="l00574"></a>00574 }
+<a name="l00575"></a>00575 
+<a name="l00576"></a>00576 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00577"></a>00577 _close_fds(<span class="keyword">struct</span> fds *fds)
+<a name="l00578"></a>00578 {
+<a name="l00579"></a>00579     <span class="keywordtype">int</span> r;
+<a name="l00580"></a>00580 
+<a name="l00581"></a>00581     r = 0;
+<a name="l00582"></a>00582     <span class="keywordflow">if</span> (close(fds-&gt;<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>) != 0) {
+<a name="l00583"></a>00583         r--;
+<a name="l00584"></a>00584         perror(<span class="stringliteral">"close"</span>);
+<a name="l00585"></a>00585     }
+<a name="l00586"></a>00586 
+<a name="l00587"></a>00587     <span class="keywordflow">if</span> (close(fds-&gt;<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>) != 0) {
+<a name="l00588"></a>00588         r--;
+<a name="l00589"></a>00589         perror(<span class="stringliteral">"close"</span>);
+<a name="l00590"></a>00590     }
+<a name="l00591"></a>00591 
+<a name="l00592"></a>00592     <span class="keywordflow">return</span> r;
+<a name="l00593"></a>00593 }
+<a name="l00594"></a>00594 
+<a name="l00595"></a>00595 <span class="keywordtype">int</span>
+<a name="l00596"></a><a class="code" href="lightmediascanner__process_8c.html#6b68b00b80a98a178c7d69b962267a11">00596</a> <a class="code" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lms_close_pipes</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>)
+<a name="l00597"></a>00597 {
+<a name="l00598"></a>00598     <span class="keywordtype">int</span> r;
+<a name="l00599"></a>00599 
+<a name="l00600"></a>00600     r = _close_fds(&amp;pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>);
+<a name="l00601"></a>00601     r += _close_fds(&amp;pinfo-&gt;<a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>);
+<a name="l00602"></a>00602 
+<a name="l00603"></a>00603     <span class="keywordflow">return</span> r;
+<a name="l00604"></a>00604 }
+<a name="l00605"></a>00605 
+<a name="l00606"></a>00606 <span class="keywordtype">int</span>
+<a name="l00607"></a><a class="code" href="lightmediascanner__process_8c.html#c2e1320b9770e0f522451b13f82efc2b">00607</a> <a class="code" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lms_create_pipes</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>)
+<a name="l00608"></a>00608 {
+<a name="l00609"></a>00609     <span class="keywordtype">int</span> fds[2];
+<a name="l00610"></a>00610 
+<a name="l00611"></a>00611     <span class="keywordflow">if</span> (pipe(fds) != 0) {
+<a name="l00612"></a>00612         perror(<span class="stringliteral">"pipe"</span>);
+<a name="l00613"></a>00613         <span class="keywordflow">return</span> -1;
+<a name="l00614"></a>00614     }
+<a name="l00615"></a>00615     pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>.<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a> = fds[0];
+<a name="l00616"></a>00616     pinfo-&gt;<a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>.<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a> = fds[1];
+<a name="l00617"></a>00617 
+<a name="l00618"></a>00618     <span class="keywordflow">if</span> (pipe(fds) != 0) {
+<a name="l00619"></a>00619         perror(<span class="stringliteral">"pipe"</span>);
+<a name="l00620"></a>00620         close(pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>.<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>);
+<a name="l00621"></a>00621         close(pinfo-&gt;<a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>.<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>);
+<a name="l00622"></a>00622         <span class="keywordflow">return</span> -1;
+<a name="l00623"></a>00623     }
+<a name="l00624"></a>00624     pinfo-&gt;<a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>.<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a> = fds[0];
+<a name="l00625"></a>00625     pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>.<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a> = fds[1];
+<a name="l00626"></a>00626 
+<a name="l00627"></a>00627     pinfo-&gt;<a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>.fd = pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>.<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>;
+<a name="l00628"></a>00628     pinfo-&gt;<a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>.events = POLLIN;
+<a name="l00629"></a>00629 
+<a name="l00630"></a>00630     <span class="keywordflow">return</span> 0;
+<a name="l00631"></a>00631 }
+<a name="l00632"></a>00632 
+<a name="l00633"></a>00633 <span class="keywordtype">int</span>
+<a name="l00634"></a><a class="code" href="lightmediascanner__process_8c.html#e92fe8fe90d93d5ad9a42387a4b2fc6e">00634</a> <a class="code" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>, <span class="keywordtype">int</span> (*work)(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">struct</span> fds *fds))
+<a name="l00635"></a>00635 {
+<a name="l00636"></a>00636     <span class="keywordtype">int</span> r;
+<a name="l00637"></a>00637 
+<a name="l00638"></a>00638     pinfo-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> = fork();
+<a name="l00639"></a>00639     <span class="keywordflow">if</span> (pinfo-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> == -1) {
+<a name="l00640"></a>00640         perror(<span class="stringliteral">"fork"</span>);
+<a name="l00641"></a>00641         <span class="keywordflow">return</span> -1;
+<a name="l00642"></a>00642     }
+<a name="l00643"></a>00643 
+<a name="l00644"></a>00644     <span class="keywordflow">if</span> (pinfo-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> &gt; 0)
+<a name="l00645"></a>00645         <span class="keywordflow">return</span> 0;
+<a name="l00646"></a>00646 
+<a name="l00647"></a>00647     _close_fds(&amp;pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>);
+<a name="l00648"></a>00648     nice(19);
+<a name="l00649"></a>00649     r = work(pinfo-&gt;<a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>, &amp;pinfo-&gt;<a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>);
+<a name="l00650"></a>00650     <a class="code" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lms_free</a>(pinfo-&gt;<a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>);
+<a name="l00651"></a>00651     _exit(r);
+<a name="l00652"></a>00652     <span class="keywordflow">return</span> r; <span class="comment">/* shouldn't reach anyway... */</span>
+<a name="l00653"></a>00653 }
+<a name="l00654"></a>00654 
+<a name="l00655"></a>00655 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00656"></a>00656 _waitpid(pid_t pid)
+<a name="l00657"></a>00657 {
+<a name="l00658"></a>00658     <span class="keywordtype">int</span> status;
+<a name="l00659"></a>00659     pid_t r;
+<a name="l00660"></a>00660 
+<a name="l00661"></a>00661     r = waitpid(pid, &amp;status, 0);
+<a name="l00662"></a>00662     <span class="keywordflow">if</span> (r &gt; -1)
+<a name="l00663"></a>00663         <span class="keywordflow">return</span> 0;
+<a name="l00664"></a>00664     <span class="keywordflow">else</span>
+<a name="l00665"></a>00665         perror(<span class="stringliteral">"waitpid"</span>);
+<a name="l00666"></a>00666 
+<a name="l00667"></a>00667     <span class="keywordflow">return</span> r;
+<a name="l00668"></a>00668 }
+<a name="l00669"></a>00669 
+<a name="l00670"></a>00670 <span class="keywordtype">int</span>
+<a name="l00671"></a><a class="code" href="lightmediascanner__process_8c.html#9f980636d608c6af99477ba37e196050">00671</a> <a class="code" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lms_finish_slave</a>(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> (*finish)(<span class="keyword">const</span> <span class="keyword">struct</span> fds *fds))
+<a name="l00672"></a>00672 {
+<a name="l00673"></a>00673     <span class="keywordtype">int</span> r;
+<a name="l00674"></a>00674 
+<a name="l00675"></a>00675     <span class="keywordflow">if</span> (pinfo-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> &lt;= 0)
+<a name="l00676"></a>00676         <span class="keywordflow">return</span> 0;
+<a name="l00677"></a>00677 
+<a name="l00678"></a>00678     r = finish(&amp;pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>);
+<a name="l00679"></a>00679     <span class="keywordflow">if</span> (r == 0)
+<a name="l00680"></a>00680         r = _waitpid(pinfo-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>);
+<a name="l00681"></a>00681     <span class="keywordflow">else</span> {
+<a name="l00682"></a>00682         r = kill(pinfo-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>, SIGKILL);
+<a name="l00683"></a>00683         <span class="keywordflow">if</span> (r &lt; 0)
+<a name="l00684"></a>00684             perror(<span class="stringliteral">"kill"</span>);
+<a name="l00685"></a>00685         <span class="keywordflow">else</span>
+<a name="l00686"></a>00686             r =_waitpid(pinfo-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>);
+<a name="l00687"></a>00687     }
+<a name="l00688"></a>00688     pinfo-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> = 0;
+<a name="l00689"></a>00689 
+<a name="l00690"></a>00690     <span class="keywordflow">return</span> r;
+<a name="l00691"></a>00691 }
+<a name="l00692"></a>00692 
+<a name="l00693"></a>00693 <span class="keywordtype">int</span>
+<a name="l00694"></a><a class="code" href="lightmediascanner__process_8c.html#9bf510645947b478dab39f633bbd35f3">00694</a> <a class="code" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lms_restart_slave</a>(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> (*work)(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">struct</span> fds *fds))
+<a name="l00695"></a>00695 {
+<a name="l00696"></a>00696     <span class="keywordtype">int</span> status;
+<a name="l00697"></a>00697 
+<a name="l00698"></a>00698     <span class="keywordflow">if</span> (waitpid(pinfo-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>, &amp;status, WNOHANG) &gt; 0) {
+<a name="l00699"></a>00699         <span class="keywordflow">if</span> (WIFEXITED(status)) {
+<a name="l00700"></a>00700             <span class="keywordtype">int</span> code;
+<a name="l00701"></a>00701 
+<a name="l00702"></a>00702             code = WEXITSTATUS(status);
+<a name="l00703"></a>00703             <span class="keywordflow">if</span> (code != 0) {
+<a name="l00704"></a>00704                 fprintf(stderr, <span class="stringliteral">"ERROR: slave returned %d, exit.\n"</span>, code);
+<a name="l00705"></a>00705                 pinfo-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> = 0;
+<a name="l00706"></a>00706                 <span class="keywordflow">return</span> -1;
+<a name="l00707"></a>00707             }
+<a name="l00708"></a>00708         } <span class="keywordflow">else</span> {
+<a name="l00709"></a>00709             <span class="keywordflow">if</span> (WIFSIGNALED(status)) {
+<a name="l00710"></a>00710                 <span class="keywordtype">int</span> code;
+<a name="l00711"></a>00711 
+<a name="l00712"></a>00712                 code = WTERMSIG(status);
+<a name="l00713"></a>00713                 fprintf(stderr, <span class="stringliteral">"ERROR: slave was terminated by signal %d.\n"</span>,
+<a name="l00714"></a>00714                         code);
+<a name="l00715"></a>00715             }
+<a name="l00716"></a>00716             pinfo-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> = 0;
+<a name="l00717"></a>00717             <span class="keywordflow">return</span> -1;
+<a name="l00718"></a>00718         }
+<a name="l00719"></a>00719     }
+<a name="l00720"></a>00720 
+<a name="l00721"></a>00721     <span class="keywordflow">if</span> (kill(pinfo-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>, SIGKILL))
+<a name="l00722"></a>00722         perror(<span class="stringliteral">"kill"</span>);
+<a name="l00723"></a>00723 
+<a name="l00724"></a>00724     <span class="keywordflow">if</span> (waitpid(pinfo-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>, &amp;status, 0) &lt; 0)
+<a name="l00725"></a>00725         perror(<span class="stringliteral">"waitpid"</span>);
+<a name="l00726"></a>00726 
+<a name="l00727"></a>00727     _consume_garbage(&amp;pinfo-&gt;<a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>);
+<a name="l00728"></a>00728     <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave</a>(pinfo, work);
+<a name="l00729"></a>00729 }
+<a name="l00730"></a>00730 
+<a name="l00731"></a>00731 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00732"></a>00732 _strcat(<span class="keywordtype">int</span> base, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
+<a name="l00733"></a>00733 {
+<a name="l00734"></a>00734     <span class="keywordtype">int</span> new_len, name_len;
+<a name="l00735"></a>00735 
+<a name="l00736"></a>00736     name_len = strlen(name);
+<a name="l00737"></a>00737     new_len = base + name_len;
+<a name="l00738"></a>00738 
+<a name="l00739"></a>00739     <span class="keywordflow">if</span> (new_len &gt;= <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>) {
+<a name="l00740"></a>00740         path[base] = <span class="charliteral">'\0'</span>;
+<a name="l00741"></a>00741         fprintf(stderr,
+<a name="l00742"></a>00742                 <span class="stringliteral">"ERROR: path concatenation too long %d of %d "</span>
+<a name="l00743"></a>00743                 <span class="stringliteral">"available: \"%s\" + \"%s\"\n"</span>, new_len, <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>,
+<a name="l00744"></a>00744                 path, name);
+<a name="l00745"></a>00745         <span class="keywordflow">return</span> -1;
+<a name="l00746"></a>00746     }
+<a name="l00747"></a>00747 
+<a name="l00748"></a>00748     memcpy(path + base, name, name_len + 1);
+<a name="l00749"></a>00749 
+<a name="l00750"></a>00750     <span class="keywordflow">return</span> new_len;
+<a name="l00751"></a>00751 }
+<a name="l00752"></a>00752 
+<a name="l00753"></a>00753 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
+<a name="l00754"></a>00754 _report_progress(<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> path_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lms_progress_status_t</a> status)
+<a name="l00755"></a>00755 {
+<a name="l00756"></a>00756     <a class="code" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> cb;
+<a name="l00757"></a>00757     <a class="code" href="structlms.html">lms_t</a> *lms = info-&gt;<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>;
+<a name="l00758"></a>00758 
+<a name="l00759"></a>00759     cb = lms-&gt;<a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#94615d22fba40d580a8a0055d28221c4">cb</a>;
+<a name="l00760"></a>00760     <span class="keywordflow">if</span> (!cb)
+<a name="l00761"></a>00761         <span class="keywordflow">return</span>;
+<a name="l00762"></a>00762 
+<a name="l00763"></a>00763     cb(lms, path, path_len, status, lms-&gt;<a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a>);
+<a name="l00764"></a>00764 }
+<a name="l00765"></a>00765 
+<a name="l00766"></a>00766 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00767"></a>00767 _process_file(<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keywordtype">int</span> base, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
+<a name="l00768"></a>00768 {
+<a name="l00769"></a>00769     <span class="keyword">struct </span>pinfo *pinfo = (<span class="keyword">struct </span>pinfo *)info;
+<a name="l00770"></a>00770     <span class="keywordtype">int</span> new_len, reply, r;
+<a name="l00771"></a>00771 
+<a name="l00772"></a>00772     new_len = _strcat(base, path, name);
+<a name="l00773"></a>00773     <span class="keywordflow">if</span> (new_len &lt; 0)
+<a name="l00774"></a>00774         <span class="keywordflow">return</span> -1;
+<a name="l00775"></a>00775 
+<a name="l00776"></a>00776     <span class="keywordflow">if</span> (_master_send_path(&amp;pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, new_len, base, path) != 0)
+<a name="l00777"></a>00777         <span class="keywordflow">return</span> -2;
+<a name="l00778"></a>00778 
+<a name="l00779"></a>00779     r = _master_recv_reply(&amp;pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, &amp;pinfo-&gt;<a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>, &amp;reply,
+<a name="l00780"></a>00780                            pinfo-&gt;<a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>-&gt;<a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>);
+<a name="l00781"></a>00781     <span class="keywordflow">if</span> (r &lt; 0) {
+<a name="l00782"></a>00782         _report_progress(info, path, new_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082">LMS_PROGRESS_STATUS_ERROR_COMM</a>);
+<a name="l00783"></a>00783         <span class="keywordflow">return</span> -3;
+<a name="l00784"></a>00784     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r == 1) {
+<a name="l00785"></a>00785         fprintf(stderr, <span class="stringliteral">"ERROR: slave took too long, restart %d\n"</span>,
+<a name="l00786"></a>00786                 pinfo-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>);
+<a name="l00787"></a>00787         _report_progress(info, path, new_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152">LMS_PROGRESS_STATUS_KILLED</a>);
+<a name="l00788"></a>00788         <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lms_restart_slave</a>(pinfo, _slave_work) != 0)
+<a name="l00789"></a>00789             <span class="keywordflow">return</span> -4;
+<a name="l00790"></a>00790         <span class="keywordflow">return</span> 1;
+<a name="l00791"></a>00791     } <span class="keywordflow">else</span> {
+<a name="l00792"></a>00792         <span class="keywordflow">if</span> (reply &lt; 0) {
+<a name="l00793"></a>00793             fprintf(stderr, <span class="stringliteral">"ERROR: pid=%d failed to parse \"%s\".\n"</span>,
+<a name="l00794"></a>00794                     getpid(), path);
+<a name="l00795"></a>00795             _report_progress(
+<a name="l00796"></a>00796                 info, path, new_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">LMS_PROGRESS_STATUS_ERROR_PARSE</a>);
+<a name="l00797"></a>00797             <span class="keywordflow">return</span> (-reply) &lt;&lt; 8;
+<a name="l00798"></a>00798         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (reply == 2)
+<a name="l00799"></a>00799             _report_progress(info, path, new_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d23704d4c093ecf32b2eba688a42908aa338c">LMS_PROGRESS_STATUS_SKIPPED</a>);
+<a name="l00800"></a>00800         <span class="keywordflow">else</span>
+<a name="l00801"></a>00801             _report_progress(
+<a name="l00802"></a>00802                 info, path, new_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">LMS_PROGRESS_STATUS_PROCESSED</a>);
+<a name="l00803"></a>00803         <span class="keywordflow">return</span> reply;
+<a name="l00804"></a>00804     }
+<a name="l00805"></a>00805 }
+<a name="l00806"></a>00806 
+<a name="l00807"></a>00807 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00808"></a>00808 _process_file_single_process(<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keywordtype">int</span> base, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
+<a name="l00809"></a>00809 {
+<a name="l00810"></a>00810     <span class="keyword">struct </span><a class="code" href="structsinfo.html">sinfo</a> *<a class="code" href="structsinfo.html">sinfo</a> = (<span class="keyword">struct </span>sinfo *)info;
+<a name="l00811"></a>00811     <span class="keywordtype">int</span> new_len, r;
+<a name="l00812"></a>00812 
+<a name="l00813"></a>00813     <span class="keywordtype">void</span> **parser_match = sinfo-&gt;<a class="code" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">parser_match</a>;
+<a name="l00814"></a>00814     <span class="keyword">struct </span>db *db = sinfo-&gt;<a class="code" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">db</a>;
+<a name="l00815"></a>00815     <a class="code" href="structlms.html">lms_t</a> *lms = sinfo-&gt;<a class="code" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>;
+<a name="l00816"></a>00816 
+<a name="l00817"></a>00817     new_len = _strcat(base, path, name);
+<a name="l00818"></a>00818     <span class="keywordflow">if</span> (new_len &lt; 0)
+<a name="l00819"></a>00819         <span class="keywordflow">return</span> -1;
+<a name="l00820"></a>00820 
+<a name="l00821"></a>00821     r = _db_and_parsers_process_file(
+<a name="l00822"></a>00822         lms, db, parser_match, path, new_len, base);
+<a name="l00823"></a>00823     <span class="keywordflow">if</span> (r &lt; 0) {
+<a name="l00824"></a>00824         fprintf(stderr, <span class="stringliteral">"ERROR: pid=%d failed to parse \"%s\".\n"</span>,
+<a name="l00825"></a>00825                 getpid(), path);
+<a name="l00826"></a>00826         _report_progress(info, path, new_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">LMS_PROGRESS_STATUS_ERROR_PARSE</a>);
+<a name="l00827"></a>00827         <span class="keywordflow">return</span> (-r) &lt;&lt; 8;
+<a name="l00828"></a>00828     } <span class="keywordflow">else</span> {
+<a name="l00829"></a>00829         sinfo-&gt;<a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a>++;
+<a name="l00830"></a>00830         <span class="keywordflow">if</span> (sinfo-&gt;<a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a> &gt; lms-&gt;<a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a>) {
+<a name="l00831"></a>00831             <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db-&gt;transaction_commit);
+<a name="l00832"></a>00832             <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db-&gt;transaction_begin);
+<a name="l00833"></a>00833             sinfo-&gt;<a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a> = 0;
+<a name="l00834"></a>00834         }
+<a name="l00835"></a>00835 
+<a name="l00836"></a>00836         <span class="keywordflow">if</span> (r == 2)
+<a name="l00837"></a>00837             _report_progress(info, path, new_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d23704d4c093ecf32b2eba688a42908aa338c">LMS_PROGRESS_STATUS_SKIPPED</a>);
+<a name="l00838"></a>00838         <span class="keywordflow">else</span>
+<a name="l00839"></a>00839             _report_progress(
+<a name="l00840"></a>00840                 info, path, new_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">LMS_PROGRESS_STATUS_PROCESSED</a>);
+<a name="l00841"></a>00841         <span class="keywordflow">return</span> r;
+<a name="l00842"></a>00842     }
+<a name="l00843"></a>00843 }
+<a name="l00844"></a>00844 
+<a name="l00845"></a>00845 <span class="keyword">static</span> <span class="keywordtype">int</span> _process_dir(<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keywordtype">int</span> base, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">process_file_callback_t</a> process_file);
+<a name="l00846"></a>00846 
+<a name="l00847"></a>00847 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00848"></a>00848 _process_unknown(<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keywordtype">int</span> base, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">process_file_callback_t</a> process_file)
+<a name="l00849"></a>00849 {
+<a name="l00850"></a>00850     <span class="keyword">struct </span>stat st;
+<a name="l00851"></a>00851     <span class="keywordtype">int</span> new_len;
+<a name="l00852"></a>00852 
+<a name="l00853"></a>00853     new_len = _strcat(base, path, name);
+<a name="l00854"></a>00854     <span class="keywordflow">if</span> (new_len &lt; 0)
+<a name="l00855"></a>00855         <span class="keywordflow">return</span> -1;
+<a name="l00856"></a>00856 
+<a name="l00857"></a>00857     <span class="keywordflow">if</span> (stat(path, &amp;st) != 0) {
+<a name="l00858"></a>00858         perror(<span class="stringliteral">"stat"</span>);
+<a name="l00859"></a>00859         <span class="keywordflow">return</span> -2;
+<a name="l00860"></a>00860     }
+<a name="l00861"></a>00861 
+<a name="l00862"></a>00862     <span class="keywordflow">if</span> (S_ISREG(st.st_mode))
+<a name="l00863"></a>00863         <span class="keywordflow">return</span> process_file(info, base, path, name);
+<a name="l00864"></a>00864     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (S_ISDIR(st.st_mode))
+<a name="l00865"></a>00865         <span class="keywordflow">return</span> _process_dir(info, base, path, name, process_file);
+<a name="l00866"></a>00866     <span class="keywordflow">else</span> {
+<a name="l00867"></a>00867         fprintf(stderr,
+<a name="l00868"></a>00868                 <span class="stringliteral">"INFO: %s is neither a directory nor a regular file.\n"</span>, path);
+<a name="l00869"></a>00869         <span class="keywordflow">return</span> -3;
+<a name="l00870"></a>00870     }
+<a name="l00871"></a>00871 }
+<a name="l00872"></a>00872 
+<a name="l00873"></a>00873 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00874"></a>00874 _process_dir(<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keywordtype">int</span> base, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">process_file_callback_t</a> process_file)
+<a name="l00875"></a>00875 {
+<a name="l00876"></a>00876     <a class="code" href="structlms.html">lms_t</a> *lms = info-&gt;<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>;
+<a name="l00877"></a>00877     <span class="keyword">struct </span>dirent *de;
+<a name="l00878"></a>00878     <span class="keywordtype">int</span> new_len, r;
+<a name="l00879"></a>00879     DIR *dir;
+<a name="l00880"></a>00880 
+<a name="l00881"></a>00881     new_len = _strcat(base, path, name);
+<a name="l00882"></a>00882     <span class="keywordflow">if</span> (new_len &lt; 0)
+<a name="l00883"></a>00883         <span class="keywordflow">return</span> -1;
+<a name="l00884"></a>00884     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (new_len + 1 &gt;= <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>) {
+<a name="l00885"></a>00885         fprintf(stderr, <span class="stringliteral">"ERROR: path too long\n"</span>);
+<a name="l00886"></a>00886         <span class="keywordflow">return</span> 2;
+<a name="l00887"></a>00887     }
+<a name="l00888"></a>00888 
+<a name="l00889"></a>00889     dir = opendir(path);
+<a name="l00890"></a>00890     <span class="keywordflow">if</span> (dir == NULL) {
+<a name="l00891"></a>00891         perror(<span class="stringliteral">"opendir"</span>);
+<a name="l00892"></a>00892         <span class="keywordflow">return</span> 3;
+<a name="l00893"></a>00893     }
+<a name="l00894"></a>00894 
+<a name="l00895"></a>00895     path[new_len] = <span class="charliteral">'/'</span>;
+<a name="l00896"></a>00896     new_len++;
+<a name="l00897"></a>00897 
+<a name="l00898"></a>00898     r = 0;
+<a name="l00899"></a>00899     <span class="keywordflow">while</span> ((de = readdir(dir)) != NULL &amp;&amp; !lms-&gt;<a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a>) {
+<a name="l00900"></a>00900         <span class="keywordflow">if</span> (de-&gt;d_name[0] == <span class="charliteral">'.'</span>)
+<a name="l00901"></a>00901             <span class="keywordflow">continue</span>;
+<a name="l00902"></a>00902         <span class="keywordflow">if</span> (de-&gt;d_type == DT_REG) {
+<a name="l00903"></a>00903             <span class="keywordflow">if</span> (process_file(info, new_len, path, de-&gt;d_name) &lt; 0) {
+<a name="l00904"></a>00904                 fprintf(stderr,
+<a name="l00905"></a>00905                         <span class="stringliteral">"ERROR: unrecoverable error parsing file, "</span>
+<a name="l00906"></a>00906                         <span class="stringliteral">"exit \"%s\".\n"</span>, path);
+<a name="l00907"></a>00907                 path[new_len - 1] = <span class="charliteral">'\0'</span>;
+<a name="l00908"></a>00908                 r = -4;
+<a name="l00909"></a>00909                 <span class="keywordflow">goto</span> end;
+<a name="l00910"></a>00910             }
+<a name="l00911"></a>00911         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (de-&gt;d_type == DT_DIR) {
+<a name="l00912"></a>00912             <span class="keywordflow">if</span> (_process_dir(
+<a name="l00913"></a>00913                     info, new_len, path, de-&gt;d_name, process_file) &lt; 0) {
+<a name="l00914"></a>00914                 fprintf(stderr,
+<a name="l00915"></a>00915                         <span class="stringliteral">"ERROR: unrecoverable error parsing dir, "</span>
+<a name="l00916"></a>00916                         <span class="stringliteral">"exit \"%s\".\n"</span>, path);
+<a name="l00917"></a>00917                 path[new_len - 1] = <span class="charliteral">'\0'</span>;
+<a name="l00918"></a>00918                 r = -5;
+<a name="l00919"></a>00919                 <span class="keywordflow">goto</span> end;
+<a name="l00920"></a>00920             }
+<a name="l00921"></a>00921         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (de-&gt;d_type == DT_UNKNOWN) {
+<a name="l00922"></a>00922             <span class="keywordflow">if</span> (_process_unknown(
+<a name="l00923"></a>00923                     info, new_len, path, de-&gt;d_name, process_file) &lt; 0) {
+<a name="l00924"></a>00924                 fprintf(stderr,
+<a name="l00925"></a>00925                         <span class="stringliteral">"ERROR: unrecoverable error parsing DT_UNKNOWN, "</span>
+<a name="l00926"></a>00926                         <span class="stringliteral">"exit \"%s\".\n"</span>, path);
+<a name="l00927"></a>00927                 path[new_len - 1] = <span class="charliteral">'\0'</span>;
+<a name="l00928"></a>00928                 r = -6;
+<a name="l00929"></a>00929                 <span class="keywordflow">goto</span> end;
+<a name="l00930"></a>00930             }
+<a name="l00931"></a>00931         }
+<a name="l00932"></a>00932     }
+<a name="l00933"></a>00933 
+<a name="l00934"></a>00934   end:
+<a name="l00935"></a>00935     closedir(dir);
+<a name="l00936"></a>00936     <span class="keywordflow">return</span> r;
+<a name="l00937"></a>00937 }
+<a name="l00938"></a>00938 
+<a name="l00939"></a>00939 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00940"></a>00940 _lms_process_check_valid(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *path)
+<a name="l00941"></a>00941 {
+<a name="l00942"></a>00942     <span class="keywordflow">if</span> (!lms)
+<a name="l00943"></a>00943         <span class="keywordflow">return</span> -1;
+<a name="l00944"></a>00944 
+<a name="l00945"></a>00945     <span class="keywordflow">if</span> (!path)
+<a name="l00946"></a>00946         <span class="keywordflow">return</span> -2;
+<a name="l00947"></a>00947 
+<a name="l00948"></a>00948     <span class="keywordflow">if</span> (lms-&gt;<a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>) {
+<a name="l00949"></a>00949         fprintf(stderr, <span class="stringliteral">"ERROR: is already processing.\n"</span>);
+<a name="l00950"></a>00950         <span class="keywordflow">return</span> -3;
+<a name="l00951"></a>00951     }
+<a name="l00952"></a>00952 
+<a name="l00953"></a>00953     <span class="keywordflow">if</span> (!lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>) {
+<a name="l00954"></a>00954         fprintf(stderr, <span class="stringliteral">"ERROR: no plugins registered.\n"</span>);
+<a name="l00955"></a>00955         <span class="keywordflow">return</span> -4;
+<a name="l00956"></a>00956     }
+<a name="l00957"></a>00957 
+<a name="l00958"></a>00958     <span class="keywordflow">return</span> 0;
+<a name="l00959"></a>00959 }
+<a name="l00960"></a>00960 
+<a name="l00961"></a>00961 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00962"></a>00962 _process_trigger(<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path, <a class="code" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">process_file_callback_t</a> process_file)
+<a name="l00963"></a>00963 {
+<a name="l00964"></a>00964     <span class="keywordtype">char</span> path[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>], *bname;
+<a name="l00965"></a>00965     <a class="code" href="structlms.html">lms_t</a> *lms = info-&gt;<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>;
+<a name="l00966"></a>00966     <span class="keywordtype">int</span> len;
+<a name="l00967"></a>00967     <span class="keywordtype">int</span> r;
+<a name="l00968"></a>00968 
+<a name="l00969"></a>00969     <span class="keywordflow">if</span> (realpath(top_path, path) == NULL) {
+<a name="l00970"></a>00970         perror(<span class="stringliteral">"realpath"</span>);
+<a name="l00971"></a>00971         <span class="keywordflow">return</span> -1;
+<a name="l00972"></a>00972     }
+<a name="l00973"></a>00973 
+<a name="l00974"></a>00974     <span class="comment">/* search '/' backwards, split dirname and basename, note realpath usage */</span>
+<a name="l00975"></a>00975     len = strlen(path);
+<a name="l00976"></a>00976     <span class="keywordflow">for</span> (; len &gt;= 0 &amp;&amp; path[len] != <span class="charliteral">'/'</span>; len--);
+<a name="l00977"></a>00977     len++;
+<a name="l00978"></a>00978     bname = strdup(path + len);
+<a name="l00979"></a>00979     <span class="keywordflow">if</span> (bname == NULL) {
+<a name="l00980"></a>00980         perror(<span class="stringliteral">"strdup"</span>);
+<a name="l00981"></a>00981         <span class="keywordflow">return</span> -2;
+<a name="l00982"></a>00982     }
+<a name="l00983"></a>00983 
+<a name="l00984"></a>00984     lms-&gt;<a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 1;
+<a name="l00985"></a>00985     lms-&gt;<a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a> = 0;
+<a name="l00986"></a>00986     r = _process_dir(info, len, path, bname, process_file);
+<a name="l00987"></a>00987     lms-&gt;<a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 0;
+<a name="l00988"></a>00988     lms-&gt;<a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a> = 0;
+<a name="l00989"></a>00989     free(bname);
+<a name="l00990"></a>00990 
+<a name="l00991"></a>00991     <span class="keywordflow">return</span> r;
+<a name="l00992"></a>00992 }
+<a name="l00993"></a>00993 
+<a name="l01004"></a>01004 <span class="keywordtype">int</span>
+<a name="l01005"></a><a class="code" href="lightmediascanner__process_8c.html#c2f07fb73717514237862c98dbf023b2">01005</a> <a class="code" href="lightmediascanner_8h.html#7d2b81cfe07a8cce4c2bef705e7529f4">lms_process</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path)
+<a name="l01006"></a>01006 {
+<a name="l01007"></a>01007     <span class="keyword">struct </span>pinfo pinfo;
+<a name="l01008"></a>01008     <span class="keywordtype">int</span> r;
+<a name="l01009"></a>01009 
+<a name="l01010"></a>01010     r = _lms_process_check_valid(lms, top_path);
+<a name="l01011"></a>01011     <span class="keywordflow">if</span> (r &lt; 0)
+<a name="l01012"></a>01012         <span class="keywordflow">return</span> r;
+<a name="l01013"></a>01013 
+<a name="l01014"></a>01014     pinfo.<a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a> = lms;
+<a name="l01015"></a>01015 
+<a name="l01016"></a>01016     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lms_create_pipes</a>(&amp;pinfo) != 0) {
+<a name="l01017"></a>01017         r = -1;
+<a name="l01018"></a>01018         <span class="keywordflow">goto</span> end;
+<a name="l01019"></a>01019     }
+<a name="l01020"></a>01020 
+<a name="l01021"></a>01021     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave</a>(&amp;pinfo, _slave_work) != 0) {
+<a name="l01022"></a>01022         r = -2;
+<a name="l01023"></a>01023         <span class="keywordflow">goto</span> close_pipes;
+<a name="l01024"></a>01024     }
+<a name="l01025"></a>01025 
+<a name="l01026"></a>01026     r = _process_trigger((<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *)&amp;pinfo, top_path, _process_file);
+<a name="l01027"></a>01027 
+<a name="l01028"></a>01028     <a class="code" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lms_finish_slave</a>(&amp;pinfo, _master_send_finish);
+<a name="l01029"></a>01029   close_pipes:
+<a name="l01030"></a>01030     <a class="code" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lms_close_pipes</a>(&amp;pinfo);
+<a name="l01031"></a>01031   end:
+<a name="l01032"></a>01032     <span class="keywordflow">return</span> r;
+<a name="l01033"></a>01033 }
+<a name="l01034"></a>01034 
+<a name="l01046"></a>01046 <span class="keywordtype">int</span>
+<a name="l01047"></a><a class="code" href="lightmediascanner__process_8c.html#5db83cefb7a50bbecea9de26a6ef1c2c">01047</a> <a class="code" href="lightmediascanner_8h.html#c5eda23c23b2ea76f001ac994c2ba9e2">lms_process_single_process</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path)
+<a name="l01048"></a>01048 {
+<a name="l01049"></a>01049     <span class="keyword">struct </span>sinfo sinfo;
+<a name="l01050"></a>01050     <span class="keywordtype">int</span> r;
+<a name="l01051"></a>01051 
+<a name="l01052"></a>01052     r = _lms_process_check_valid(lms, top_path);
+<a name="l01053"></a>01053     <span class="keywordflow">if</span> (r &lt; 0)
+<a name="l01054"></a>01054         <span class="keywordflow">return</span> r;
+<a name="l01055"></a>01055 
+<a name="l01056"></a>01056     sinfo.<a class="code" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a> = lms;
+<a name="l01057"></a>01057     sinfo.<a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a> = 0;
+<a name="l01058"></a>01058 
+<a name="l01059"></a>01059     r = _db_and_parsers_setup(sinfo.<a class="code" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>, &amp;sinfo.<a class="code" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">db</a>, &amp;sinfo.<a class="code" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">parser_match</a>);
+<a name="l01060"></a>01060     <span class="keywordflow">if</span> (r &lt; 0) {
+<a name="l01061"></a>01061         <span class="keywordflow">if</span> (r == -1)
+<a name="l01062"></a>01062             <span class="keywordflow">return</span> r;
+<a name="l01063"></a>01063         <span class="keywordflow">else</span>
+<a name="l01064"></a>01064             <span class="keywordflow">goto</span> finish;
+<a name="l01065"></a>01065     }
+<a name="l01066"></a>01066 
+<a name="l01067"></a>01067     <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(sinfo.<a class="code" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">db</a>-&gt;transaction_begin);
+<a name="l01068"></a>01068 
+<a name="l01069"></a>01069     r = _process_trigger(
+<a name="l01070"></a>01070         (<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *)&amp;sinfo, top_path, _process_file_single_process);
+<a name="l01071"></a>01071 
+<a name="l01072"></a>01072     free(sinfo.parser_match);
+<a name="l01073"></a>01073     <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(sinfo.db-&gt;transaction_commit);
+<a name="l01074"></a>01074 
+<a name="l01075"></a>01075   finish:
+<a name="l01076"></a>01076     <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(lms, sinfo.db-&gt;handle);
+<a name="l01077"></a>01077     _db_close(sinfo.db);
+<a name="l01078"></a>01078     <span class="keywordflow">return</span> r;
+<a name="l01079"></a>01079 }
+<a name="l01080"></a>01080 
+<a name="l01081"></a>01081 <span class="keywordtype">void</span>
+<a name="l01082"></a><a class="code" href="lightmediascanner__process_8c.html#36d624baae0531c20e716c88a82e0aaf">01082</a> <a class="code" href="lightmediascanner_8h.html#30aa1e83907fc1049d2adccb28eef489">lms_stop_processing</a>(<a class="code" href="structlms.html">lms_t</a> *lms)
+<a name="l01083"></a>01083 {
+<a name="l01084"></a>01084     <span class="keywordflow">if</span> (!lms)
+<a name="l01085"></a>01085         <span class="keywordflow">return</span>;
+<a name="l01086"></a>01086     <span class="keywordflow">if</span> (!lms-&gt;<a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>)
+<a name="l01087"></a>01087         <span class="keywordflow">return</span>;
+<a name="l01088"></a>01088 
+<a name="l01089"></a>01089     lms-&gt;<a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a> = 1;
+<a name="l01090"></a>01090 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__process_8c.html b/www/api/lightmediascanner__process_8c.html
new file mode 100644 (file)
index 0000000..b753481
--- /dev/null
@@ -0,0 +1,584 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_process.c File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>src/lib/lightmediascanner_process.c File Reference</h1><code>#include &lt;sys/wait.h&gt;</code><br>
+<code>#include &lt;sys/stat.h&gt;</code><br>
+<code>#include &lt;unistd.h&gt;</code><br>
+<code>#include &lt;dirent.h&gt;</code><br>
+<code>#include &lt;signal.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;string.h&gt;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&quot;</code><br>
+
+<p>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_process.c:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<a href="lightmediascanner__process_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#369266c24eacffb87046522897a570d5">_GNU_SOURCE</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#c321bebfc5c24cbbac30031202c460e9">lms_parsers_setup</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#6e02f78f026b2ad282184476dca13e45">lms_parsers_start</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#d002464442b08826a1da920bdf4957b7">lms_parsers_finish</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#f2e95cea50ce24774d2f5ed7d8c8f41c">lms_parsers_check_using</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, void **parser_match, struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#4ab78dfbf29822d91472d18dd7424e77">lms_parsers_run</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, sqlite3 *db, void **parser_match, struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#6b68b00b80a98a178c7d69b962267a11">lms_close_pipes</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#c2e1320b9770e0f522451b13f82efc2b">lms_create_pipes</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#e92fe8fe90d93d5ad9a42387a4b2fc6e">lms_create_slave</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>, int(*work)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#9f980636d608c6af99477ba37e196050">lms_finish_slave</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>, int(*finish)(const struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#9bf510645947b478dab39f633bbd35f3">lms_restart_slave</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>, int(*work)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#c2f07fb73717514237862c98dbf023b2">lms_process</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *top_path)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#5db83cefb7a50bbecea9de26a6ef1c2c">lms_process_single_process</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *top_path)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#36d624baae0531c20e716c88a82e0aaf">lms_stop_processing</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>)</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="369266c24eacffb87046522897a570d5"></a><!-- doxytag: member="lightmediascanner_process.c::_GNU_SOURCE" ref="369266c24eacffb87046522897a570d5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _GNU_SOURCE          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copyright (C) 2007 by INdT<p>
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00025">25</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="6b68b00b80a98a178c7d69b962267a11"></a><!-- doxytag: member="lightmediascanner_process.c::lms_close_pipes" ref="6b68b00b80a98a178c7d69b962267a11" args="(struct pinfo *pinfo)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_close_pipes           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00596">596</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00057">pinfo::master</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00058">pinfo::slave</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01005">lms_process()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="c2e1320b9770e0f522451b13f82efc2b"></a><!-- doxytag: member="lightmediascanner_process.c::lms_create_pipes" ref="c2e1320b9770e0f522451b13f82efc2b" args="(struct pinfo *pinfo)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_create_pipes           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00607">607</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00057">pinfo::master</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00059">pinfo::poll</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00045">fds::r</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00058">pinfo::slave</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00046">fds::w</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01005">lms_process()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="e92fe8fe90d93d5ad9a42387a4b2fc6e"></a><!-- doxytag: member="lightmediascanner_process.c::lms_create_slave" ref="e92fe8fe90d93d5ad9a42387a4b2fc6e" args="(struct pinfo *pinfo, int(*work)(lms_t *lms, struct fds *fds))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_create_slave           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int(*)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)&nbsp;</td>
+          <td class="paramname"> <em>work</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00634">634</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00056">pinfo::child</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00055">pinfo::common</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00050">cinfo::lms</a>, <a class="el" href="lightmediascanner_8c-source.html#l00159">lms_free()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00057">pinfo::master</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00058">pinfo::slave</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="9f980636d608c6af99477ba37e196050"></a><!-- doxytag: member="lightmediascanner_process.c::lms_finish_slave" ref="9f980636d608c6af99477ba37e196050" args="(struct pinfo *pinfo, int(*finish)(const struct fds *fds))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_finish_slave           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int(*)(const struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)&nbsp;</td>
+          <td class="paramname"> <em>finish</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00671">671</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00056">pinfo::child</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00057">pinfo::master</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="f2e95cea50ce24774d2f5ed7d8c8f41c"></a><!-- doxytag: member="lightmediascanner_process.c::lms_parsers_check_using" ref="f2e95cea50ce24774d2f5ed7d8c8f41c" args="(lms_t *lms, void **parser_match, struct lms_file_info *finfo)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_parsers_check_using           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>parser_match</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00367">367</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00148">lms_file_info::base</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00169">lms_plugin::match</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00146">lms_file_info::path</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00147">lms_file_info::path_len</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00071">parser::plugin</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="d002464442b08826a1da920bdf4957b7"></a><!-- doxytag: member="lightmediascanner_process.c::lms_parsers_finish" ref="d002464442b08826a1da920bdf4957b7" args="(lms_t *lms, sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_parsers_finish           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00345">345</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00174">lms_plugin::finish</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00168">lms_plugin::name</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00071">parser::plugin</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="4ab78dfbf29822d91472d18dd7424e77"></a><!-- doxytag: member="lightmediascanner_process.c::lms_parsers_run" ref="4ab78dfbf29822d91472d18dd7424e77" args="(lms_t *lms, sqlite3 *db, void **parser_match, struct lms_file_info *finfo)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_parsers_run           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>parser_match</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00387">387</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00170">lms_plugin::parse</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00071">parser::plugin</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="c321bebfc5c24cbbac30031202c460e9"></a><!-- doxytag: member="lightmediascanner_process.c::lms_parsers_setup" ref="c321bebfc5c24cbbac30031202c460e9" args="(lms_t *lms, sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_parsers_setup           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00293">293</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00174">lms_plugin::finish</a>, <a class="el" href="lightmediascanner_8c-source.html#l00294">lms_parser_del_int()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00168">lms_plugin::name</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00071">parser::plugin</a>, and <a class="el" href="lightmediascanner__plugin_8h-source.html#l00172">lms_plugin::setup</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="6e02f78f026b2ad282184476dca13e45"></a><!-- doxytag: member="lightmediascanner_process.c::lms_parsers_start" ref="6e02f78f026b2ad282184476dca13e45" args="(lms_t *lms, sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_parsers_start           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00319">319</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00174">lms_plugin::finish</a>, <a class="el" href="lightmediascanner_8c-source.html#l00294">lms_parser_del_int()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00168">lms_plugin::name</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00071">parser::plugin</a>, and <a class="el" href="lightmediascanner__plugin_8h-source.html#l00173">lms_plugin::start</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="c2f07fb73717514237862c98dbf023b2"></a><!-- doxytag: member="lightmediascanner_process.c::lms_process" ref="c2f07fb73717514237862c98dbf023b2" args="(lms_t *lms, const char *top_path)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_process           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>top_path</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Process the given directory.<p>
+This will add or update media found in the given directory or its children.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>top_path</em>&nbsp;</td><td>top directory to scan.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l01005">1005</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00055">pinfo::common</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00050">cinfo::lms</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00596">lms_close_pipes()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00607">lms_create_pipes()</a>, <a class="el" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave()</a>, and <a class="el" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lms_finish_slave()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="5db83cefb7a50bbecea9de26a6ef1c2c"></a><!-- doxytag: member="lightmediascanner_process.c::lms_process_single_process" ref="5db83cefb7a50bbecea9de26a6ef1c2c" args="(lms_t *lms, const char *top_path)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_process_single_process           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>top_path</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Process the given directory *without fork()-ing* into child process.<p>
+This will add or update media found in the given directory or its children. Note that if a <a class="el" href="structparser.html">parser</a> hangs during the process, this call will also hang.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>top_path</em>&nbsp;</td><td>top directory to scan.</td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l01047">1047</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00067">sinfo::commit_counter</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00064">sinfo::common</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00065">sinfo::db</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00050">cinfo::lms</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00532">lms_db_begin_transaction()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00559">lms_db_end_transaction()</a>, <a class="el" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish()</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00066">sinfo::parser_match</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="9bf510645947b478dab39f633bbd35f3"></a><!-- doxytag: member="lightmediascanner_process.c::lms_restart_slave" ref="9bf510645947b478dab39f633bbd35f3" args="(struct pinfo *pinfo, int(*work)(lms_t *lms, struct fds *fds))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_restart_slave           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int(*)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)&nbsp;</td>
+          <td class="paramname"> <em>work</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00694">694</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00056">pinfo::child</a>, <a class="el" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave()</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00059">pinfo::poll</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="36d624baae0531c20e716c88a82e0aaf"></a><!-- doxytag: member="lightmediascanner_process.c::lms_stop_processing" ref="36d624baae0531c20e716c88a82e0aaf" args="(lms_t *lms)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void lms_stop_processing           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l01082">1082</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00088">lms::is_processing</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00089">lms::stop_processing</a>.</p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__process_8c_5db83cefb7a50bbecea9de26a6ef1c2c_cgraph.dot b/www/api/lightmediascanner__process_8c_5db83cefb7a50bbecea9de26a6ef1c2c_cgraph.dot
new file mode 100644 (file)
index 0000000..58c5d2d
--- /dev/null
@@ -0,0 +1,14 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_process_single_process",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_db_begin_transaction",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_db_end_transaction",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lms_parsers_finish",height=0.2,width=0.4,color="black",URL="$lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f"];
+}
diff --git a/www/api/lightmediascanner__process_8c_5db83cefb7a50bbecea9de26a6ef1c2c_cgraph.md5 b/www/api/lightmediascanner__process_8c_5db83cefb7a50bbecea9de26a6ef1c2c_cgraph.md5
new file mode 100644 (file)
index 0000000..7455e77
--- /dev/null
@@ -0,0 +1 @@
+e62d222ba815168ae862c6476d8ccf84
\ No newline at end of file
diff --git a/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.dot b/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.dot
new file mode 100644 (file)
index 0000000..6c4a4c7
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_parsers_start",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_parser_del_int",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf"];
+}
diff --git a/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.md5 b/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.md5
new file mode 100644 (file)
index 0000000..94504c2
--- /dev/null
@@ -0,0 +1 @@
+4d753703b39fc0b9548d48d3aacc6cb4
\ No newline at end of file
diff --git a/www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.dot b/www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.dot
new file mode 100644 (file)
index 0000000..1fcb62a
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_restart_slave",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_create_slave",height=0.2,width=0.4,color="black",URL="$lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6"];
+}
diff --git a/www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.md5 b/www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.md5
new file mode 100644 (file)
index 0000000..79f790e
--- /dev/null
@@ -0,0 +1 @@
+a13a076121386b56f1f14200b632b47e
\ No newline at end of file
diff --git a/www/api/lightmediascanner__process_8c__incl.dot b/www/api/lightmediascanner__process_8c__incl.dot
new file mode 100644 (file)
index 0000000..8b7534c
--- /dev/null
@@ -0,0 +1,49 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_process.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="sys/wait.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="sys/stat.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="unistd.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="dirent.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="signal.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="stdio.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="stdlib.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="string.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="lightmediascanner.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8h.html"];
+  Node1 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="lightmediascanner_private.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__private_8h.html"];
+  Node11 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="lightmediascanner_plugin.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__plugin_8h.html"];
+  Node12 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="lightmediascanner_charset_conv.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__charset__conv_8h.html"];
+  Node12 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="sqlite3.h",height=0.2,width=0.4,color="grey75"];
+  Node12 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node11 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="poll.h",height=0.2,width=0.4,color="grey75"];
+  Node11 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="limits.h",height=0.2,width=0.4,color="grey75"];
+  Node11 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="lightmediascanner_db_private.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__private_8h.html"];
+  Node18 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}
diff --git a/www/api/lightmediascanner__process_8c__incl.md5 b/www/api/lightmediascanner__process_8c__incl.md5
new file mode 100644 (file)
index 0000000..9f7bfad
--- /dev/null
@@ -0,0 +1 @@
+36f1b89514800aeb2a369e7d8013adcf
\ No newline at end of file
diff --git a/www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.dot b/www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.dot
new file mode 100644 (file)
index 0000000..57c048f
--- /dev/null
@@ -0,0 +1,16 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_process",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_close_pipes",height=0.2,width=0.4,color="black",URL="$lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_create_pipes",height=0.2,width=0.4,color="black",URL="$lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="lms_create_slave",height=0.2,width=0.4,color="black",URL="$lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6"];
+  Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="lms_finish_slave",height=0.2,width=0.4,color="black",URL="$lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5"];
+}
diff --git a/www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.md5 b/www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.md5
new file mode 100644 (file)
index 0000000..fc7e288
--- /dev/null
@@ -0,0 +1 @@
+ad645493b242b4b8f663724f5c4297ce
\ No newline at end of file
diff --git a/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.dot b/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.dot
new file mode 100644 (file)
index 0000000..52376e8
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_parsers_setup",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_parser_del_int",height=0.2,width=0.4,color="black",URL="$lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf"];
+}
diff --git a/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.md5 b/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.md5
new file mode 100644 (file)
index 0000000..9c13a51
--- /dev/null
@@ -0,0 +1 @@
+60c3b25b0b67be22210d500217851f8a
\ No newline at end of file
diff --git a/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.dot b/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.dot
new file mode 100644 (file)
index 0000000..a893489
--- /dev/null
@@ -0,0 +1,12 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_create_slave",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_free",height=0.2,width=0.4,color="black",URL="$group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="lms_charset_conv_free",height=0.2,width=0.4,color="black",URL="$group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091"];
+}
diff --git a/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.md5 b/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.md5
new file mode 100644 (file)
index 0000000..17c547d
--- /dev/null
@@ -0,0 +1 @@
+78bbb5185b7a4a042ce0f3b10f501274
\ No newline at end of file
diff --git a/www/api/lightmediascanner__utils_8c-source.html b/www/api/lightmediascanner__utils_8c-source.html
new file mode 100644 (file)
index 0000000..cacce35
--- /dev/null
@@ -0,0 +1,153 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_utils.c Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>src/lib/lightmediascanner_utils.c</h1><a href="lightmediascanner__utils_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="lightmediascanner__utils_8h.html">lightmediascanner_utils.h</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;ctype.h&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;alloca.h&gt;</span>
+<a name="l00025"></a>00025 
+<a name="l00033"></a>00033 <span class="keywordtype">void</span>
+<a name="l00034"></a><a class="code" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">00034</a> <a class="code" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">lms_strstrip</a>(<span class="keywordtype">char</span> *str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len)
+<a name="l00035"></a>00035 {
+<a name="l00036"></a>00036     <span class="keywordtype">int</span> i, len;
+<a name="l00037"></a>00037     <span class="keywordtype">char</span> *p;
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039     len = *p_len;
+<a name="l00040"></a>00040 
+<a name="l00041"></a>00041     <span class="keywordflow">if</span> (len == 0)
+<a name="l00042"></a>00042         <span class="keywordflow">return</span>;
+<a name="l00043"></a>00043 
+<a name="l00044"></a>00044     <span class="keywordflow">if</span> (*str == <span class="charliteral">'\0'</span>) {
+<a name="l00045"></a>00045         *p_len = 0;
+<a name="l00046"></a>00046         <span class="keywordflow">return</span>;
+<a name="l00047"></a>00047     }
+<a name="l00048"></a>00048 
+<a name="l00049"></a>00049     p = str + len - 1;
+<a name="l00050"></a>00050     <span class="keywordflow">for</span> (i = len - 1; i &gt;= 0; i--) {
+<a name="l00051"></a>00051         <span class="keywordflow">if</span> (isspace(*p) || *p == <span class="charliteral">'\0'</span>) {
+<a name="l00052"></a>00052             *p = <span class="charliteral">'\0'</span>;
+<a name="l00053"></a>00053             len--;
+<a name="l00054"></a>00054             p--;
+<a name="l00055"></a>00055         } <span class="keywordflow">else</span>
+<a name="l00056"></a>00056             <span class="keywordflow">break</span>;
+<a name="l00057"></a>00057     }
+<a name="l00058"></a>00058     <span class="keywordflow">if</span> (len == 0) {
+<a name="l00059"></a>00059         *p_len = 0;
+<a name="l00060"></a>00060         <span class="keywordflow">return</span>;
+<a name="l00061"></a>00061     }
+<a name="l00062"></a>00062 
+<a name="l00063"></a>00063     p = str;
+<a name="l00064"></a>00064     <span class="keywordflow">for</span> (i = 0; i &lt; len; i++) {
+<a name="l00065"></a>00065         <span class="keywordflow">if</span> (isspace(*p))
+<a name="l00066"></a>00066             p++;
+<a name="l00067"></a>00067         <span class="keywordflow">else</span>
+<a name="l00068"></a>00068             <span class="keywordflow">break</span>;
+<a name="l00069"></a>00069     }
+<a name="l00070"></a>00070     len -= i;
+<a name="l00071"></a>00071     <span class="keywordflow">if</span> (len == 0) {
+<a name="l00072"></a>00072         *str = <span class="charliteral">'\0'</span>;
+<a name="l00073"></a>00073         *p_len = 0;
+<a name="l00074"></a>00074         <span class="keywordflow">return</span>;
+<a name="l00075"></a>00075     }
+<a name="l00076"></a>00076 
+<a name="l00077"></a>00077     *p_len = len;
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079     <span class="keywordflow">if</span> (str &lt; p)
+<a name="l00080"></a>00080         <span class="keywordflow">for</span> (; len &gt;= 0; len--, str++, p++)
+<a name="l00081"></a>00081             *str = *p;
+<a name="l00082"></a>00082 }
+<a name="l00083"></a>00083 
+<a name="l00093"></a>00093 <span class="keywordtype">void</span>
+<a name="l00094"></a><a class="code" href="lightmediascanner__utils_8c.html#45d15c8bfeddaef0d5b1d0bd9ecc0c79">00094</a> <a class="code" href="lightmediascanner__utils_8c.html#45d15c8bfeddaef0d5b1d0bd9ecc0c79">lms_strstrip_and_free</a>(<span class="keywordtype">char</span> **p_str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len)
+<a name="l00095"></a>00095 {
+<a name="l00096"></a>00096     <span class="keywordflow">if</span> (!*p_str)
+<a name="l00097"></a>00097         <span class="keywordflow">return</span>;
+<a name="l00098"></a>00098 
+<a name="l00099"></a>00099     <a class="code" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">lms_strstrip</a>(*p_str, p_len);
+<a name="l00100"></a>00100     <span class="keywordflow">if</span> (*p_len == 0) {
+<a name="l00101"></a>00101         free(*p_str);
+<a name="l00102"></a>00102         *p_str = NULL;
+<a name="l00103"></a>00103     }
+<a name="l00104"></a>00104 }
+<a name="l00105"></a>00105 
+<a name="l00113"></a>00113 <span class="keywordtype">void</span>
+<a name="l00114"></a><a class="code" href="lightmediascanner__utils_8h.html#5a7e5da69500a12f447a77177dbb6e0d">00114</a> <a class="code" href="lightmediascanner__utils_8c.html#9ed157dee5c16f4c62c5ae6e281580cf">lms_string_size_strip_and_free</a>(<span class="keyword">struct</span> <a class="code" href="structlms__string__size.html">lms_string_size</a> *p)
+<a name="l00115"></a>00115 {
+<a name="l00116"></a>00116     <span class="keywordflow">if</span> (!p-&gt;<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>)
+<a name="l00117"></a>00117         <span class="keywordflow">return</span>;
+<a name="l00118"></a>00118 
+<a name="l00119"></a>00119     <a class="code" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">lms_strstrip</a>(p-&gt;<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, &amp;p-&gt;<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00120"></a>00120     <span class="keywordflow">if</span> (p-&gt;<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a> == 0) {
+<a name="l00121"></a>00121         free(p-&gt;<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>);
+<a name="l00122"></a>00122         p-&gt;<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a> = NULL;
+<a name="l00123"></a>00123     }
+<a name="l00124"></a>00124 }
+<a name="l00125"></a>00125 
+<a name="l00126"></a>00126 
+<a name="l00137"></a>00137 <span class="keywordtype">int</span>
+<a name="l00138"></a><a class="code" href="lightmediascanner__utils_8c.html#71ee8b57cf7c5eba8ec0593e756d2529">00138</a> <a class="code" href="lightmediascanner__utils_8c.html#71ee8b57cf7c5eba8ec0593e756d2529">lms_which_extension</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> name_len, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__string__size.html">lms_string_size</a> *exts, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> exts_len) {
+<a name="l00139"></a>00139     <span class="keywordtype">int</span> i;
+<a name="l00140"></a>00140     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *exts_pos;
+<a name="l00141"></a>00141     <span class="keyword">const</span> <span class="keywordtype">char</span> *s;
+<a name="l00142"></a>00142 
+<a name="l00143"></a>00143     exts_pos = alloca(exts_len * <span class="keyword">sizeof</span>(*exts_pos));
+<a name="l00144"></a>00144     <span class="keywordflow">for</span> (i = 0; i &lt; exts_len; i++)
+<a name="l00145"></a>00145         exts_pos[i] = exts[i].len;
+<a name="l00146"></a>00146 
+<a name="l00147"></a>00147     <span class="keywordflow">for</span> (s = name + name_len - 1; s &gt;= name; s--) {
+<a name="l00148"></a>00148         <span class="keywordtype">int</span> i, match;
+<a name="l00149"></a>00149         <span class="keywordtype">char</span> c1, c2;
+<a name="l00150"></a>00150 
+<a name="l00151"></a>00151         c1 = *s;
+<a name="l00152"></a>00152         <span class="keywordflow">if</span> (c1 &gt;= <span class="charliteral">'a'</span>)
+<a name="l00153"></a>00153             c2 = c1;
+<a name="l00154"></a>00154         <span class="keywordflow">else</span>
+<a name="l00155"></a>00155             c2 = <span class="charliteral">'a'</span> + c1 - <span class="charliteral">'A'</span>;
+<a name="l00156"></a>00156 
+<a name="l00157"></a>00157         match = 0;
+<a name="l00158"></a>00158         <span class="keywordflow">for</span> (i = 0; i &lt; exts_len; i++) {
+<a name="l00159"></a>00159             <span class="keywordflow">if</span> (exts_pos[i] &gt; 0) {
+<a name="l00160"></a>00160                 <span class="keywordtype">char</span> ce;
+<a name="l00161"></a>00161 
+<a name="l00162"></a>00162                 ce = exts[i].<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>[exts_pos[i] - 1];
+<a name="l00163"></a>00163                 <span class="keywordflow">if</span> (ce == c1 || ce == c2) {
+<a name="l00164"></a>00164                     <span class="keywordflow">if</span> (exts_pos[i] == 1)
+<a name="l00165"></a>00165                         <span class="keywordflow">return</span> i;
+<a name="l00166"></a>00166                     exts_pos[i]--;
+<a name="l00167"></a>00167                     match = 1;
+<a name="l00168"></a>00168                 } <span class="keywordflow">else</span>
+<a name="l00169"></a>00169                     exts_pos[i] = 0;
+<a name="l00170"></a>00170             }
+<a name="l00171"></a>00171         }
+<a name="l00172"></a>00172         <span class="keywordflow">if</span> (!match)
+<a name="l00173"></a>00173             <span class="keywordflow">return</span> -1;
+<a name="l00174"></a>00174     }
+<a name="l00175"></a>00175 
+<a name="l00176"></a>00176     <span class="keywordflow">return</span> -1;
+<a name="l00177"></a>00177 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__utils_8c.html b/www/api/lightmediascanner__utils_8c.html
new file mode 100644 (file)
index 0000000..e74b956
--- /dev/null
@@ -0,0 +1,238 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_utils.c File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>src/lib/lightmediascanner_utils.c File Reference</h1><code>#include &lt;<a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>&gt;</code><br>
+<code>#include &lt;ctype.h&gt;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;alloca.h&gt;</code><br>
+
+<p>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_utils.c:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<a href="lightmediascanner__utils_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">lms_strstrip</a> (char *str, unsigned int *p_len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8c.html#45d15c8bfeddaef0d5b1d0bd9ecc0c79">lms_strstrip_and_free</a> (char **p_str, unsigned int *p_len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8c.html#9ed157dee5c16f4c62c5ae6e281580cf">lms_string_size_strip_and_free</a> (struct <a class="el" href="structlms__string__size.html">lms_string_size</a> *p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8c.html#71ee8b57cf7c5eba8ec0593e756d2529">lms_which_extension</a> (const char *name, unsigned int name_len, const struct <a class="el" href="structlms__string__size.html">lms_string_size</a> *exts, unsigned int exts_len)</td></tr>
+
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="9ed157dee5c16f4c62c5ae6e281580cf"></a><!-- doxytag: member="lightmediascanner_utils.c::lms_string_size_strip_and_free" ref="9ed157dee5c16f4c62c5ae6e281580cf" args="(struct lms_string_size *p)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void lms_string_size_strip_and_free           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> *&nbsp;</td>
+          <td class="paramname"> <em>p</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+<a class="el" href="structlms__string__size.html">lms_string_size</a> version of <a class="el" href="lightmediascanner__utils_8c.html#45d15c8bfeddaef0d5b1d0bd9ecc0c79">lms_strstrip_and_free()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>*p</em>&nbsp;</td><td>pointer to <a class="el" href="structlms__string__size.html">lms_string_size</a> to be stripped.</td></tr>
+  </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>this will call free() on lms_string_size-&gt;str if it becomes empty. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8c-source.html#l00114">114</a> of file <a class="el" href="lightmediascanner__utils_8c-source.html">lightmediascanner_utils.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__utils_8h-source.html#l00051">lms_string_size::len</a>, <a class="el" href="lightmediascanner__utils_8c-source.html#l00034">lms_strstrip()</a>, and <a class="el" href="lightmediascanner__utils_8h-source.html#l00050">lms_string_size::str</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="086d2449129976541c66a83984bffbe6"></a><!-- doxytag: member="lightmediascanner_utils.c::lms_strstrip" ref="086d2449129976541c66a83984bffbe6" args="(char *str, unsigned int *p_len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void lms_strstrip           </td>
+          <td>(</td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int *&nbsp;</td>
+          <td class="paramname"> <em>p_len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copyright (C) 2007 by INdT<p>
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; Strips string, in place.</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>string to be stripped. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>p_len</em>&nbsp;</td><td>string length to analyse, also the place where the final size is stored. </td></tr>
+  </table>
+</dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8c-source.html#l00034">34</a> of file <a class="el" href="lightmediascanner__utils_8c-source.html">lightmediascanner_utils.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__utils_8c-source.html#l00114">lms_string_size_strip_and_free()</a>, and <a class="el" href="lightmediascanner__utils_8c-source.html#l00094">lms_strstrip_and_free()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="45d15c8bfeddaef0d5b1d0bd9ecc0c79"></a><!-- doxytag: member="lightmediascanner_utils.c::lms_strstrip_and_free" ref="45d15c8bfeddaef0d5b1d0bd9ecc0c79" args="(char **p_str, unsigned int *p_len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void lms_strstrip_and_free           </td>
+          <td>(</td>
+          <td class="paramtype">char **&nbsp;</td>
+          <td class="paramname"> <em>p_str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int *&nbsp;</td>
+          <td class="paramname"> <em>p_len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+If string exists, strips it, in place, free if *p_len = 0<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>p_str</em>&nbsp;</td><td>pointer to string to be stripped. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>p_len</em>&nbsp;</td><td>string length to analyse, also the place where the final size is stored.</td></tr>
+  </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>this will call free() on *p_str if it becomes empty. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8c-source.html#l00094">94</a> of file <a class="el" href="lightmediascanner__utils_8c-source.html">lightmediascanner_utils.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__utils_8c-source.html#l00034">lms_strstrip()</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="71ee8b57cf7c5eba8ec0593e756d2529"></a><!-- doxytag: member="lightmediascanner_utils.c::lms_which_extension" ref="71ee8b57cf7c5eba8ec0593e756d2529" args="(const char *name, unsigned int name_len, const struct lms_string_size *exts, unsigned int exts_len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_which_extension           </td>
+          <td>(</td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>name_len</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const struct <a class="el" href="structlms__string__size.html">lms_string_size</a> *&nbsp;</td>
+          <td class="paramname"> <em>exts</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>exts_len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Find out which of the given extensions matches the given name.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>string to analyse. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>name_len</em>&nbsp;</td><td>string length. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>exts</em>&nbsp;</td><td>array of extensions to be checked. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>exts_len</em>&nbsp;</td><td>number of items in array <code>exts</code> </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>index in <code>exts</code> or -1 if it doesn't match none. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8c-source.html#l00138">138</a> of file <a class="el" href="lightmediascanner__utils_8c-source.html">lightmediascanner_utils.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__utils_8h-source.html#l00050">lms_string_size::str</a>.</p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__utils_8c_45d15c8bfeddaef0d5b1d0bd9ecc0c79_cgraph.dot b/www/api/lightmediascanner__utils_8c_45d15c8bfeddaef0d5b1d0bd9ecc0c79_cgraph.dot
new file mode 100644 (file)
index 0000000..a475bc1
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_strstrip_and_free",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_strstrip",height=0.2,width=0.4,color="black",URL="$lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6"];
+}
diff --git a/www/api/lightmediascanner__utils_8c_45d15c8bfeddaef0d5b1d0bd9ecc0c79_cgraph.md5 b/www/api/lightmediascanner__utils_8c_45d15c8bfeddaef0d5b1d0bd9ecc0c79_cgraph.md5
new file mode 100644 (file)
index 0000000..2637ca7
--- /dev/null
@@ -0,0 +1 @@
+edd5d23fa02c2e269c9469f410510507
\ No newline at end of file
diff --git a/www/api/lightmediascanner__utils_8c_9ed157dee5c16f4c62c5ae6e281580cf_cgraph.dot b/www/api/lightmediascanner__utils_8c_9ed157dee5c16f4c62c5ae6e281580cf_cgraph.dot
new file mode 100644 (file)
index 0000000..c6e1369
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_string_size_strip_and_free",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_strstrip",height=0.2,width=0.4,color="black",URL="$lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6"];
+}
diff --git a/www/api/lightmediascanner__utils_8c_9ed157dee5c16f4c62c5ae6e281580cf_cgraph.md5 b/www/api/lightmediascanner__utils_8c_9ed157dee5c16f4c62c5ae6e281580cf_cgraph.md5
new file mode 100644 (file)
index 0000000..c6737b6
--- /dev/null
@@ -0,0 +1 @@
+c00672260f07c201c197966ed537d380
\ No newline at end of file
diff --git a/www/api/lightmediascanner__utils_8c__incl.dot b/www/api/lightmediascanner__utils_8c__incl.dot
new file mode 100644 (file)
index 0000000..a42fff0
--- /dev/null
@@ -0,0 +1,15 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_utils.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lightmediascanner_utils.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__utils_8h.html"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="ctype.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="stdlib.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="alloca.h",height=0.2,width=0.4,color="grey75"];
+}
diff --git a/www/api/lightmediascanner__utils_8c__incl.md5 b/www/api/lightmediascanner__utils_8c__incl.md5
new file mode 100644 (file)
index 0000000..d93fd0c
--- /dev/null
@@ -0,0 +1 @@
+a1dc263fa97a14958d091ffea4fedd69
\ No newline at end of file
diff --git a/www/api/lightmediascanner__utils_8h-source.html b/www/api/lightmediascanner__utils_8h-source.html
new file mode 100644 (file)
index 0000000..b6607a8
--- /dev/null
@@ -0,0 +1,77 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_utils.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>src/lib/lightmediascanner_utils.h</h1><a href="lightmediascanner__utils_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef _LIGHTMEDIASCANNER_UTILS_H_</span>
+<a name="l00022"></a><a class="code" href="lightmediascanner__utils_8h.html#8ad3460b8bb014878af2cdfd42fcf5c6">00022</a> <span class="preprocessor"></span><span class="preprocessor">#define _LIGHTMEDIASCANNER_UTILS_H_ 1</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#ifdef API</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#undef API</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span>
+<a name="l00028"></a>00028 <span class="preprocessor">#ifdef __GNUC__</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt;= 4</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#  define API __attribute__ ((visibility("default")))</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#  define API</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt; 3 || (__GNUC__ == 3 &amp;&amp; __GNUC_MINOR__ &gt;= 4)</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))</span>
+<a name="l00036"></a>00036 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00040"></a><a class="code" href="lightmediascanner__utils_8h.html#d8ce4efaa307683d3d763b37b4711c53">00040</a> <span class="preprocessor"></span><span class="preprocessor">#  define API</span>
+<a name="l00041"></a><a class="code" href="lightmediascanner__utils_8h.html#6fe68cac0abf3e2ca61141920414e93a">00041</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00043"></a>00043 <span class="preprocessor"></span>
+<a name="l00044"></a>00044 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+<a name="l00046"></a>00046 <span class="preprocessor">#endif</span>
+<a name="l00047"></a>00047 <span class="preprocessor"></span>
+<a name="l00048"></a>00048 
+<a name="l00049"></a><a class="code" href="structlms__string__size.html">00049</a>     <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> {
+<a name="l00050"></a><a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">00050</a>         <span class="keywordtype">char</span> *<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>;
+<a name="l00051"></a><a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">00051</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>;
+<a name="l00052"></a>00052     };
+<a name="l00053"></a>00053 
+<a name="l00054"></a><a class="code" href="lightmediascanner__utils_8h.html#786c453d995be000d52360f327a6816b">00054</a> <span class="preprocessor">#define LMS_STATIC_STRING_SIZE(s)  {s, sizeof(s) - 1}</span>
+<a name="l00055"></a><a class="code" href="lightmediascanner__utils_8h.html#13a0622cfcc91eec261da4285621bdcc">00055</a> <span class="preprocessor"></span><span class="preprocessor">#define LMS_ARRAY_SIZE(a)  (sizeof(a) / sizeof(*a))</span>
+<a name="l00056"></a>00056 <span class="preprocessor"></span>
+<a name="l00057"></a>00057 
+<a name="l00058"></a>00058     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">lms_strstrip</a>(<span class="keywordtype">char</span> *str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00059"></a>00059     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="lightmediascanner__utils_8c.html#45d15c8bfeddaef0d5b1d0bd9ecc0c79">lms_strstrip_and_free</a>(<span class="keywordtype">char</span> **p_str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00060"></a>00060     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="lightmediascanner__utils_8c.html#9ed157dee5c16f4c62c5ae6e281580cf">lms_string_size_strip_and_free</a>(<span class="keyword">struct</span> <a class="code" href="structlms__string__size.html">lms_string_size</a> *p) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00061"></a>00061     <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__utils_8c.html#71ee8b57cf7c5eba8ec0593e756d2529">lms_which_extension</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> name_len, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__string__size.html">lms_string_size</a> *exts, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> exts_len) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 3);
+<a name="l00062"></a>00062 
+<a name="l00063"></a>00063 
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00066"></a>00066 <span class="preprocessor"></span>}
+<a name="l00067"></a>00067 <span class="preprocessor">#endif</span>
+<a name="l00068"></a>00068 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_UTILS_H_ */</span>
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__utils_8h.html b/www/api/lightmediascanner__utils_8h.html
new file mode 100644 (file)
index 0000000..bcdd97f
--- /dev/null
@@ -0,0 +1,307 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: src/lib/lightmediascanner_utils.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>src/lib/lightmediascanner_utils.h File Reference</h1>
+<p>
+<div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dynsection">
+</div>
+
+<p>
+<a href="lightmediascanner__utils_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__string__size.html">lms_string_size</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#8ad3460b8bb014878af2cdfd42fcf5c6">_LIGHTMEDIASCANNER_UTILS_H_</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#786c453d995be000d52360f327a6816b">LMS_STATIC_STRING_SIZE</a>(s)&nbsp;&nbsp;&nbsp;{s, sizeof(s) - 1}</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#13a0622cfcc91eec261da4285621bdcc">LMS_ARRAY_SIZE</a>(a)&nbsp;&nbsp;&nbsp;(sizeof(a) / sizeof(*a))</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#281568969e526a7bdf687da4d1cc75ab">lms_strstrip</a> (char *str, unsigned int *p_len) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API void API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#01cee33e2410ae7081905a4e06d890cc">lms_strstrip_and_free</a> (char **p_str, unsigned int *p_len) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API void API void API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#5a7e5da69500a12f447a77177dbb6e0d">lms_string_size_strip_and_free</a> (struct <a class="el" href="structlms__string__size.html">lms_string_size</a> *p) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#7dfc23066442e00fff5cbe77e6f1426e">lms_which_extension</a> (const char *name, unsigned int name_len, const struct <a class="el" href="structlms__string__size.html">lms_string_size</a> *exts, unsigned int exts_len) GNUC_NON_NULL(1</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="8ad3460b8bb014878af2cdfd42fcf5c6"></a><!-- doxytag: member="lightmediascanner_utils.h::_LIGHTMEDIASCANNER_UTILS_H_" ref="8ad3460b8bb014878af2cdfd42fcf5c6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _LIGHTMEDIASCANNER_UTILS_H_&nbsp;&nbsp;&nbsp;1          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copyright (C) 2007 by INdT<p>
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00022">22</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="d8ce4efaa307683d3d763b37b4711c53"></a><!-- doxytag: member="lightmediascanner_utils.h::API" ref="d8ce4efaa307683d3d763b37b4711c53" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define API          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00040">40</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner_utils.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_NON_NULL          </td>
+          <td>(</td>
+          <td class="paramtype"> <em>...</em>&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00041">41</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="13a0622cfcc91eec261da4285621bdcc"></a><!-- doxytag: member="lightmediascanner_utils.h::LMS_ARRAY_SIZE" ref="13a0622cfcc91eec261da4285621bdcc" args="(a)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define LMS_ARRAY_SIZE          </td>
+          <td>(</td>
+          <td class="paramtype">a&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td>&nbsp;&nbsp;&nbsp;(sizeof(a) / sizeof(*a))</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00055">55</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="786c453d995be000d52360f327a6816b"></a><!-- doxytag: member="lightmediascanner_utils.h::LMS_STATIC_STRING_SIZE" ref="786c453d995be000d52360f327a6816b" args="(s)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define LMS_STATIC_STRING_SIZE          </td>
+          <td>(</td>
+          <td class="paramtype">s&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td>&nbsp;&nbsp;&nbsp;{s, sizeof(s) - 1}</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00054">54</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.</p>
+
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="5a7e5da69500a12f447a77177dbb6e0d"></a><!-- doxytag: member="lightmediascanner_utils.h::lms_string_size_strip_and_free" ref="5a7e5da69500a12f447a77177dbb6e0d" args="(struct lms_string_size *p) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API void API void API void lms_string_size_strip_and_free           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> *&nbsp;</td>
+          <td class="paramname"> <em>p</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+<a class="el" href="structlms__string__size.html">lms_string_size</a> version of <a class="el" href="lightmediascanner__utils_8c.html#45d15c8bfeddaef0d5b1d0bd9ecc0c79">lms_strstrip_and_free()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>*p</em>&nbsp;</td><td>pointer to <a class="el" href="structlms__string__size.html">lms_string_size</a> to be stripped.</td></tr>
+  </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>this will call free() on lms_string_size-&gt;str if it becomes empty. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8c-source.html#l00114">114</a> of file <a class="el" href="lightmediascanner__utils_8c-source.html">lightmediascanner_utils.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__utils_8h-source.html#l00051">lms_string_size::len</a>, <a class="el" href="lightmediascanner__utils_8c-source.html#l00034">lms_strstrip()</a>, and <a class="el" href="lightmediascanner__utils_8h-source.html#l00050">lms_string_size::str</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="281568969e526a7bdf687da4d1cc75ab"></a><!-- doxytag: member="lightmediascanner_utils.h::lms_strstrip" ref="281568969e526a7bdf687da4d1cc75ab" args="(char *str, unsigned int *p_len) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API void lms_strstrip           </td>
+          <td>(</td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int *&nbsp;</td>
+          <td class="paramname"> <em>p_len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="01cee33e2410ae7081905a4e06d890cc"></a><!-- doxytag: member="lightmediascanner_utils.h::lms_strstrip_and_free" ref="01cee33e2410ae7081905a4e06d890cc" args="(char **p_str, unsigned int *p_len) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API void API void lms_strstrip_and_free           </td>
+          <td>(</td>
+          <td class="paramtype">char **&nbsp;</td>
+          <td class="paramname"> <em>p_str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int *&nbsp;</td>
+          <td class="paramname"> <em>p_len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="7dfc23066442e00fff5cbe77e6f1426e"></a><!-- doxytag: member="lightmediascanner_utils.h::lms_which_extension" ref="7dfc23066442e00fff5cbe77e6f1426e" args="(const char *name, unsigned int name_len, const struct lms_string_size *exts, unsigned int exts_len) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_which_extension           </td>
+          <td>(</td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>name_len</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const struct <a class="el" href="structlms__string__size.html">lms_string_size</a> *&nbsp;</td>
+          <td class="paramname"> <em>exts</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>exts_len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__utils_8h_5a7e5da69500a12f447a77177dbb6e0d_cgraph.dot b/www/api/lightmediascanner__utils_8h_5a7e5da69500a12f447a77177dbb6e0d_cgraph.dot
new file mode 100644 (file)
index 0000000..c6e1369
--- /dev/null
@@ -0,0 +1,10 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  rankdir=LR;
+  Node1 [label="lms_string_size_strip_and_free",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="lms_strstrip",height=0.2,width=0.4,color="black",URL="$lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6"];
+}
diff --git a/www/api/lightmediascanner__utils_8h_5a7e5da69500a12f447a77177dbb6e0d_cgraph.md5 b/www/api/lightmediascanner__utils_8h_5a7e5da69500a12f447a77177dbb6e0d_cgraph.md5
new file mode 100644 (file)
index 0000000..c6737b6
--- /dev/null
@@ -0,0 +1 @@
+c00672260f07c201c197966ed537d380
\ No newline at end of file
diff --git a/www/api/lightmediascanner__utils_8h__dep__incl.dot b/www/api/lightmediascanner__utils_8h__dep__incl.dot
new file mode 100644 (file)
index 0000000..0bfaa19
--- /dev/null
@@ -0,0 +1,19 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="src/lib/lightmediascanner_utils.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="src/lib/lightmediascanner_db.h",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db_8h.html"];
+  Node2 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="src/lib/lightmediascanner_db_audio.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__audio_8c.html"];
+  Node2 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="src/lib/lightmediascanner_db_image.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__image_8c.html"];
+  Node2 -> Node5 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="src/lib/lightmediascanner_db_playlist.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__playlist_8c.html"];
+  Node2 -> Node6 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="src/lib/lightmediascanner_db_video.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__db__video_8c.html"];
+  Node1 -> Node7 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="src/lib/lightmediascanner_utils.c",height=0.2,width=0.4,color="black",URL="$lightmediascanner__utils_8c.html"];
+}
diff --git a/www/api/lightmediascanner__utils_8h__dep__incl.md5 b/www/api/lightmediascanner__utils_8h__dep__incl.md5
new file mode 100644 (file)
index 0000000..b0b448c
--- /dev/null
@@ -0,0 +1 @@
+8923213b8c529c541c691c72abf46ccc
\ No newline at end of file
diff --git a/www/api/modules.html b/www/api/modules.html
new file mode 100644 (file)
index 0000000..b8e90a0
--- /dev/null
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Module Index</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li class="current"><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>Modules</h1>Here is a list of all modules:<ul>
+<li><a class="el" href="group__LMS__API.html">User-API</a>
+<li><a class="el" href="group__LMS__CHARSET.html">Charset Conversion</a>
+<li><a class="el" href="group__LMS__DB.html">DataBase-API</a>
+<li><a class="el" href="group__LMS__Plugin.html">Plugins-API</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structcinfo.html b/www/api/structcinfo.html
new file mode 100644 (file)
index 0000000..660b47f
--- /dev/null
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: cinfo Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>cinfo Struct Reference</h1><!-- doxytag: class="cinfo" --><code>#include &lt;<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for cinfo:</div>
+<div class="dynsection">
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00049">49</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="eff7e00325ac7d8674f42f4bfc198b5a"></a><!-- doxytag: member="cinfo::lms" ref="eff7e00325ac7d8674f42f4bfc198b5a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structlms.html">lms_t</a>* <a class="el" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">cinfo::lms</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00050">50</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, <a class="el" href="lightmediascanner__check_8c-source.html#l00949">lms_check_single_process()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00634">lms_create_slave()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l01005">lms_process()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01047">lms_process_single_process()</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structcinfo__coll__graph.dot b/www/api/structcinfo__coll__graph.dot
new file mode 100644 (file)
index 0000000..66102e6
--- /dev/null
@@ -0,0 +1,15 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="{cinfo\n|+ lms\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="lms",arrowtail="open",fontname="FreeSans"];
+  Node2 [label="{lms\n|+ parsers\l+ n_parsers\l+ cs_conv\l+ db_path\l+ slave_timeout\l+ cb\l+ data\l+ free_data\l+ progress\l+ commit_interval\l+ is_processing\l+ stop_processing\l|}",height=0.2,width=0.4,color="black",URL="$structlms.html"];
+  Node3 -> Node2 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="cs_conv",arrowtail="open",fontname="FreeSans"];
+  Node3 [label="{lms_charset_conv\n|+ check\l+ fallback\l+ size\l+ convs\l+ names\l|}",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node2 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="parsers",arrowtail="open",fontname="FreeSans"];
+  Node4 [label="{parser\n|+ plugin\l+ dl_handle\l+ so_path\l|}",height=0.2,width=0.4,color="black",URL="$structparser.html"];
+  Node5 -> Node4 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="plugin",arrowtail="open",fontname="FreeSans"];
+  Node5 [label="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}",height=0.2,width=0.4,color="black",URL="$structlms__plugin.html"];
+}
diff --git a/www/api/structcinfo__coll__graph.md5 b/www/api/structcinfo__coll__graph.md5
new file mode 100644 (file)
index 0000000..1a80f42
--- /dev/null
@@ -0,0 +1 @@
+c51900b708126a53f243416c9af586aa
\ No newline at end of file
diff --git a/www/api/structfds.html b/www/api/structfds.html
new file mode 100644 (file)
index 0000000..c08d5cb
--- /dev/null
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: fds Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>fds Struct Reference</h1><!-- doxytag: class="fds" --><code>#include &lt;<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfds.html#d13e19697072e306771103286a8316d0">w</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00044">44</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="c49bfa8d58564d4c483eb434b9ff5710"></a><!-- doxytag: member="fds::r" ref="c49bfa8d58564d4c483eb434b9ff5710" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">fds::r</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00045">45</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00607">lms_create_pipes()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="d13e19697072e306771103286a8316d0"></a><!-- doxytag: member="fds::w" ref="d13e19697072e306771103286a8316d0" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structfds.html#d13e19697072e306771103286a8316d0">fds::w</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00046">46</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00607">lms_create_pipes()</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms.html b/www/api/structlms.html
new file mode 100644 (file)
index 0000000..909c5c0
--- /dev/null
@@ -0,0 +1,299 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: lms Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>lms Struct Reference</h1><!-- doxytag: class="lms" --><code>#include &lt;<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for lms:</div>
+<div class="dynsection">
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structparser.html">parser</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap>struct {</td></tr>
+
+<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a>&nbsp;&nbsp;&nbsp;<a class="el" href="structlms.html#94615d22fba40d580a8a0055d28221c4">cb</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;void *&nbsp;&nbsp;&nbsp;<a class="el" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a>&nbsp;&nbsp;&nbsp;<a class="el" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">free_data</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>:1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a>:1</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00076">76</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="94615d22fba40d580a8a0055d28221c4"></a><!-- doxytag: member="lms::cb" ref="94615d22fba40d580a8a0055d28221c4" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> <a class="el" href="structlms.html#94615d22fba40d580a8a0055d28221c4">lms::cb</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00083">83</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00195">lms_set_progress_callback()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="1dc82aac2ab3ff643027878bb1aa3cb8"></a><!-- doxytag: member="lms::commit_interval" ref="1dc82aac2ab3ff643027878bb1aa3cb8" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned int <a class="el" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">lms::commit_interval</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00087">87</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00449">lms_get_commit_interval()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00121">lms_new()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00472">lms_set_commit_interval()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="eba2db305bafddedf143ff7b9f2396db"></a><!-- doxytag: member="lms::cs_conv" ref="eba2db305bafddedf143ff7b9f2396db" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a>* <a class="el" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">lms::cs_conv</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00079">79</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00496">lms_charset_add()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00519">lms_charset_del()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00159">lms_free()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00121">lms_new()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="2416f15bfd15aaa5e75606b5a0686362"></a><!-- doxytag: member="lms::data" ref="2416f15bfd15aaa5e75606b5a0686362" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* <a class="el" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">lms::data</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00084">84</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00159">lms_free()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00195">lms_set_progress_callback()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="02e767169813808f193c23733ba89b4b"></a><!-- doxytag: member="lms::db_path" ref="02e767169813808f193c23733ba89b4b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char* <a class="el" href="structlms.html#02e767169813808f193c23733ba89b4b">lms::db_path</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00080">80</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00159">lms_free()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00385">lms_get_db_path()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00121">lms_new()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="3f04a1830b8ffa69c9da089b7e6fb258"></a><!-- doxytag: member="lms::free_data" ref="3f04a1830b8ffa69c9da089b7e6fb258" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a> <a class="el" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">lms::free_data</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00085">85</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00159">lms_free()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00195">lms_set_progress_callback()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="bb03533445b77299e964b2ec02bca039"></a><!-- doxytag: member="lms::is_processing" ref="bb03533445b77299e964b2ec02bca039" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned int <a class="el" href="structlms.html#bb03533445b77299e964b2ec02bca039">lms::is_processing</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00088">88</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, <a class="el" href="lightmediascanner__check_8c-source.html#l00949">lms_check_single_process()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00159">lms_free()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00366">lms_is_processing()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00221">lms_parser_add()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00334">lms_parser_del()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01082">lms_stop_processing()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="9cdd3a937a0a2bd4515e9e888bb519e3"></a><!-- doxytag: member="lms::n_parsers" ref="9cdd3a937a0a2bd4515e9e888bb519e3" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">lms::n_parsers</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00078">78</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00159">lms_free()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00221">lms_parser_add()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00334">lms_parser_del()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00294">lms_parser_del_int()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00345">lms_parsers_finish()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00387">lms_parsers_run()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="52883423c9a1276420ba2bb9b50a138c"></a><!-- doxytag: member="lms::parsers" ref="52883423c9a1276420ba2bb9b50a138c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structparser.html">parser</a>* <a class="el" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">lms::parsers</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00077">77</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00159">lms_free()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00221">lms_parser_add()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00334">lms_parser_del()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00294">lms_parser_del_int()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00345">lms_parsers_finish()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00387">lms_parsers_run()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="3f4bc299aa74c9255b730e106e0e7a8f"></a><!-- doxytag: member="lms::progress" ref="3f4bc299aa74c9255b730e106e0e7a8f" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct { ... }   <a class="el" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">lms::progress</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00159">lms_free()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00195">lms_set_progress_callback()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="0f545adf2fc37994b7f55f7ea7aac555"></a><!-- doxytag: member="lms::slave_timeout" ref="0f545adf2fc37994b7f55f7ea7aac555" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">lms::slave_timeout</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00081">81</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00407">lms_get_slave_timeout()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00121">lms_new()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00427">lms_set_slave_timeout()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="d028e3681568215f6facd7d477c74461"></a><!-- doxytag: member="lms::stop_processing" ref="d028e3681568215f6facd7d477c74461" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned int <a class="el" href="structlms.html#d028e3681568215f6facd7d477c74461">lms::stop_processing</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00089">89</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, <a class="el" href="lightmediascanner__check_8c-source.html#l00949">lms_check_single_process()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01082">lms_stop_processing()</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__audio__info.html b/www/api/structlms__audio__info.html
new file mode 100644 (file)
index 0000000..ad4582b
--- /dev/null
@@ -0,0 +1,204 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: lms_audio_info Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>lms_audio_info Struct Reference<br>
+<small>
+[<a class="el" href="group__LMS__DB.html">DataBase-API</a>]</small>
+</h1><!-- doxytag: class="lms_audio_info" --><code>#include &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for lms_audio_info:</div>
+<div class="dynsection">
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">id</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">title</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">artist</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">genre</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#7197e471d313274c4e361b2ff9e60e8a">playcnt</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#d372f08ada955f75be8f218d90093242">trackno</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#932e73ccd8ff946831930be65d1ba2d2">rating</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00086">86</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="caeda14ddf0051e9dd69861171fb66a2"></a><!-- doxytag: member="lms_audio_info::album" ref="caeda14ddf0051e9dd69861171fb66a2" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">lms_audio_info::album</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00090">90</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="6f9fa88539da4867bc34fa1e7c17816c"></a><!-- doxytag: member="lms_audio_info::artist" ref="6f9fa88539da4867bc34fa1e7c17816c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">lms_audio_info::artist</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00089">89</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="72efb9991c5f49eabd62aa61ead91031"></a><!-- doxytag: member="lms_audio_info::genre" ref="72efb9991c5f49eabd62aa61ead91031" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">lms_audio_info::genre</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00091">91</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="b59ffe210521786be5fe579167b24bc4"></a><!-- doxytag: member="lms_audio_info::id" ref="b59ffe210521786be5fe579167b24bc4" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int64_t <a class="el" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">lms_audio_info::id</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00087">87</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00694">lms_db_audio_add()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="7197e471d313274c4e361b2ff9e60e8a"></a><!-- doxytag: member="lms_audio_info::playcnt" ref="7197e471d313274c4e361b2ff9e60e8a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned int <a class="el" href="structlms__audio__info.html#7197e471d313274c4e361b2ff9e60e8a">lms_audio_info::playcnt</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00092">92</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="932e73ccd8ff946831930be65d1ba2d2"></a><!-- doxytag: member="lms_audio_info::rating" ref="932e73ccd8ff946831930be65d1ba2d2" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned char <a class="el" href="structlms__audio__info.html#932e73ccd8ff946831930be65d1ba2d2">lms_audio_info::rating</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00094">94</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="c87982b6b219add6aff3ce9c25fe00bf"></a><!-- doxytag: member="lms_audio_info::title" ref="c87982b6b219add6aff3ce9c25fe00bf" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">lms_audio_info::title</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00088">88</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="d372f08ada955f75be8f218d90093242"></a><!-- doxytag: member="lms_audio_info::trackno" ref="d372f08ada955f75be8f218d90093242" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned char <a class="el" href="structlms__audio__info.html#d372f08ada955f75be8f218d90093242">lms_audio_info::trackno</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00093">93</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__audio__info__coll__graph.dot b/www/api/structlms__audio__info__coll__graph.dot
new file mode 100644 (file)
index 0000000..3f7bfdf
--- /dev/null
@@ -0,0 +1,9 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="{lms_audio_info\n|+ id\l+ title\l+ artist\l+ album\l+ genre\l+ playcnt\l+ trackno\l+ rating\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="title\nartist\nalbum\ngenre",arrowtail="open",fontname="FreeSans"];
+  Node2 [label="{lms_string_size\n|+ str\l+ len\l|}",height=0.2,width=0.4,color="black",URL="$structlms__string__size.html"];
+}
diff --git a/www/api/structlms__audio__info__coll__graph.md5 b/www/api/structlms__audio__info__coll__graph.md5
new file mode 100644 (file)
index 0000000..c47283a
--- /dev/null
@@ -0,0 +1 @@
+f842b2815e9b81c09db9d42be21f64b5
\ No newline at end of file
diff --git a/www/api/structlms__coll__graph.dot b/www/api/structlms__coll__graph.dot
new file mode 100644 (file)
index 0000000..809cac9
--- /dev/null
@@ -0,0 +1,13 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="{lms\n|+ parsers\l+ n_parsers\l+ cs_conv\l+ db_path\l+ slave_timeout\l+ cb\l+ data\l+ free_data\l+ progress\l+ commit_interval\l+ is_processing\l+ stop_processing\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="cs_conv",arrowtail="open",fontname="FreeSans"];
+  Node2 [label="{lms_charset_conv\n|+ check\l+ fallback\l+ size\l+ convs\l+ names\l|}",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="parsers",arrowtail="open",fontname="FreeSans"];
+  Node3 [label="{parser\n|+ plugin\l+ dl_handle\l+ so_path\l|}",height=0.2,width=0.4,color="black",URL="$structparser.html"];
+  Node4 -> Node3 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="plugin",arrowtail="open",fontname="FreeSans"];
+  Node4 [label="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}",height=0.2,width=0.4,color="black",URL="$structlms__plugin.html"];
+}
diff --git a/www/api/structlms__coll__graph.md5 b/www/api/structlms__coll__graph.md5
new file mode 100644 (file)
index 0000000..06cc281
--- /dev/null
@@ -0,0 +1 @@
+0b9559d9d2cb96f2994788bb76df7bfd
\ No newline at end of file
diff --git a/www/api/structlms__context.html b/www/api/structlms__context.html
new file mode 100644 (file)
index 0000000..226328b
--- /dev/null
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: lms_context Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>lms_context Struct Reference</h1><!-- doxytag: class="lms_context" --><code>#include &lt;<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for lms_context:</div>
+<div class="dynsection">
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3 *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__context.html#310d38a2fab9ecea67601d0c6a3d8d81">db</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">cs_conv</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00155">155</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="a5ce50393bbe62f6357934a1d9ce5a61"></a><!-- doxytag: member="lms_context::cs_conv" ref="a5ce50393bbe62f6357934a1d9ce5a61" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a>* <a class="el" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">lms_context::cs_conv</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+charset conversion tool 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00157">157</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="310d38a2fab9ecea67601d0c6a3d8d81"></a><!-- doxytag: member="lms_context::db" ref="310d38a2fab9ecea67601d0c6a3d8d81" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3* <a class="el" href="structlms__context.html#310d38a2fab9ecea67601d0c6a3d8d81">lms_context::db</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+database instance 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00156">156</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__context__coll__graph.dot b/www/api/structlms__context__coll__graph.dot
new file mode 100644 (file)
index 0000000..bc4fa1c
--- /dev/null
@@ -0,0 +1,9 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="{lms_context\n|+ db\l+ cs_conv\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="cs_conv",arrowtail="open",fontname="FreeSans"];
+  Node2 [label="{lms_charset_conv\n|+ check\l+ fallback\l+ size\l+ convs\l+ names\l|}",height=0.2,width=0.4,color="grey75"];
+}
diff --git a/www/api/structlms__context__coll__graph.md5 b/www/api/structlms__context__coll__graph.md5
new file mode 100644 (file)
index 0000000..55c4e55
--- /dev/null
@@ -0,0 +1 @@
+1e2251224dceddec4b9c7df5f598a823
\ No newline at end of file
diff --git a/www/api/structlms__db__cache.html b/www/api/structlms__db__cache.html
new file mode 100644 (file)
index 0000000..472620a
--- /dev/null
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: lms_db_cache Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>lms_db_cache Struct Reference</h1><!-- doxytag: class="lms_db_cache" --><code>#include &lt;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for lms_db_cache:</div>
+<div class="dynsection">
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__db__cache__entry.html">lms_db_cache_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00062">62</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="0056bfe95b38863dc9b067d699230690"></a><!-- doxytag: member="lms_db_cache::entries" ref="0056bfe95b38863dc9b067d699230690" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__db__cache__entry.html">lms_db_cache_entry</a>* <a class="el" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">lms_db_cache::entries</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00064">64</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">lms_db_cache_add()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00437">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00462">lms_db_cache_get()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="b325e01e42fd3b0f11d52328522c6414"></a><!-- doxytag: member="lms_db_cache::size" ref="b325e01e42fd3b0f11d52328522c6414" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">lms_db_cache::size</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00063">63</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">lms_db_cache_add()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00437">lms_db_cache_del()</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__db__cache__coll__graph.dot b/www/api/structlms__db__cache__coll__graph.dot
new file mode 100644 (file)
index 0000000..c4b77cb
--- /dev/null
@@ -0,0 +1,9 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="{lms_db_cache\n|+ size\l+ entries\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="entries",arrowtail="open",fontname="FreeSans"];
+  Node2 [label="{lms_db_cache_entry\n|+ db\l+ data\l|}",height=0.2,width=0.4,color="black",URL="$structlms__db__cache__entry.html"];
+}
diff --git a/www/api/structlms__db__cache__coll__graph.md5 b/www/api/structlms__db__cache__coll__graph.md5
new file mode 100644 (file)
index 0000000..004637a
--- /dev/null
@@ -0,0 +1 @@
+77e3ebea0d93a6c4d32dd146b123397d
\ No newline at end of file
diff --git a/www/api/structlms__db__cache__entry.html b/www/api/structlms__db__cache__entry.html
new file mode 100644 (file)
index 0000000..39ca071
--- /dev/null
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: lms_db_cache_entry Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>lms_db_cache_entry Struct Reference</h1><!-- doxytag: class="lms_db_cache_entry" --><code>#include &lt;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const sqlite3 *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00057">57</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="53488063740ff72c830be3103e7150fe"></a><!-- doxytag: member="lms_db_cache_entry::data" ref="53488063740ff72c830be3103e7150fe" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* <a class="el" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">lms_db_cache_entry::data</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00059">59</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">lms_db_cache_add()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00437">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00462">lms_db_cache_get()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="01aadf6d9a8161696019d39566b15760"></a><!-- doxytag: member="lms_db_cache_entry::db" ref="01aadf6d9a8161696019d39566b15760" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const sqlite3* <a class="el" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">lms_db_cache_entry::db</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00058">58</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">lms_db_cache_add()</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__file__info.html b/www/api/structlms__file__info.html
new file mode 100644 (file)
index 0000000..6fdd672
--- /dev/null
@@ -0,0 +1,190 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: lms_file_info Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>lms_file_info Struct Reference</h1><!-- doxytag: class="lms_file_info" --><code>#include &lt;<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">time_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">time_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00145">145</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="ccc82711360714ff6ccd373fb7a42112"></a><!-- doxytag: member="lms_file_info::base" ref="ccc82711360714ff6ccd373fb7a42112" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">lms_file_info::base</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+index of basename inside path 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00148">148</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="570ae808983e67ae7b22a2fec892cffd"></a><!-- doxytag: member="lms_file_info::dtime" ref="570ae808983e67ae7b22a2fec892cffd" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">time_t <a class="el" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">lms_file_info::dtime</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+deletion time 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00151">151</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">lms_db_set_file_dtime()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">lms_db_update_file_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="d68ded5c64ae28a4976637f8483e9cfe"></a><!-- doxytag: member="lms_file_info::id" ref="d68ded5c64ae28a4976637f8483e9cfe" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int64_t <a class="el" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">lms_file_info::id</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+database id 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00149">149</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00717">lms_db_delete_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">lms_db_set_file_dtime()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">lms_db_update_file_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="4aa878eefdde84541021087192b9dacd"></a><!-- doxytag: member="lms_file_info::mtime" ref="4aa878eefdde84541021087192b9dacd" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">time_t <a class="el" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">lms_file_info::mtime</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+in-disk modification time 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00150">150</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">lms_db_update_file_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="1fa6966afec95bbb00ee01f345948e44"></a><!-- doxytag: member="lms_file_info::path" ref="1fa6966afec95bbb00ee01f345948e44" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">lms_file_info::path</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+file path 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00146">146</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="9d74df2696cfd0f516e61e9db2b35731"></a><!-- doxytag: member="lms_file_info::path_len" ref="9d74df2696cfd0f516e61e9db2b35731" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">lms_file_info::path_len</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+path length 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00147">147</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="b318b81fc934636a904f5d84efe8c1ee"></a><!-- doxytag: member="lms_file_info::size" ref="b318b81fc934636a904f5d84efe8c1ee" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">size_t <a class="el" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">lms_file_info::size</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+file size in bytes 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00152">152</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">lms_db_update_file_info()</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__gps__info.html b/www/api/structlms__gps__info.html
new file mode 100644 (file)
index 0000000..7bf8f15
--- /dev/null
@@ -0,0 +1,103 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: lms_gps_info Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>lms_gps_info Struct Reference<br>
+<small>
+[<a class="el" href="group__LMS__DB.html">DataBase-API</a>]</small>
+</h1><!-- doxytag: class="lms_gps_info" --><code>#include &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__gps__info.html#70f152098accf3d46f18bc159e3b4359">latitude</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">longitude</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__gps__info.html#9b56b5dbae3e5c5722f7331c2bcbd520">altitude</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00061">61</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="9b56b5dbae3e5c5722f7331c2bcbd520"></a><!-- doxytag: member="lms_gps_info::altitude" ref="9b56b5dbae3e5c5722f7331c2bcbd520" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">double <a class="el" href="structlms__gps__info.html#9b56b5dbae3e5c5722f7331c2bcbd520">lms_gps_info::altitude</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00064">64</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="70f152098accf3d46f18bc159e3b4359"></a><!-- doxytag: member="lms_gps_info::latitude" ref="70f152098accf3d46f18bc159e3b4359" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">double <a class="el" href="structlms__gps__info.html#70f152098accf3d46f18bc159e3b4359">lms_gps_info::latitude</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00062">62</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="109202a83eb79b9a10df135600260e1b"></a><!-- doxytag: member="lms_gps_info::longitude" ref="109202a83eb79b9a10df135600260e1b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">double <a class="el" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">lms_gps_info::longitude</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00063">63</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__image__info.html b/www/api/structlms__image__info.html
new file mode 100644 (file)
index 0000000..79d84dc
--- /dev/null
@@ -0,0 +1,204 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: lms_image_info Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>lms_image_info Struct Reference<br>
+<small>
+[<a class="el" href="group__LMS__DB.html">DataBase-API</a>]</small>
+</h1><!-- doxytag: class="lms_image_info" --><code>#include &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for lms_image_info:</div>
+<div class="dynsection">
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">id</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">title</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">artist</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#150973d3ac9f60f1b74f0a0d08c7f288">date</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#fbd2df9f6f5f290ac02ce4d803677249">width</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#f2ae81781dadf7ecaa307b3bc91e710e">height</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#434330468b69d0f14b344c672d4778af">orientation</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__gps__info.html">lms_gps_info</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">gps</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00067">67</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="ee7b8401f3272a0855ea27a2249a8aab"></a><!-- doxytag: member="lms_image_info::artist" ref="ee7b8401f3272a0855ea27a2249a8aab" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">lms_image_info::artist</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00070">70</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="150973d3ac9f60f1b74f0a0d08c7f288"></a><!-- doxytag: member="lms_image_info::date" ref="150973d3ac9f60f1b74f0a0d08c7f288" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned int <a class="el" href="structlms__image__info.html#150973d3ac9f60f1b74f0a0d08c7f288">lms_image_info::date</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00071">71</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="2f003c2cfb937ed5d667a188ba0d54e3"></a><!-- doxytag: member="lms_image_info::gps" ref="2f003c2cfb937ed5d667a188ba0d54e3" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__gps__info.html">lms_gps_info</a> <a class="el" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">lms_image_info::gps</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00075">75</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="f2ae81781dadf7ecaa307b3bc91e710e"></a><!-- doxytag: member="lms_image_info::height" ref="f2ae81781dadf7ecaa307b3bc91e710e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned short <a class="el" href="structlms__image__info.html#f2ae81781dadf7ecaa307b3bc91e710e">lms_image_info::height</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00073">73</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="e6af5a9d85600a7694991681d141844b"></a><!-- doxytag: member="lms_image_info::id" ref="e6af5a9d85600a7694991681d141844b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int64_t <a class="el" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">lms_image_info::id</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00068">68</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__image_8c-source.html#l00293">lms_db_image_add()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="434330468b69d0f14b344c672d4778af"></a><!-- doxytag: member="lms_image_info::orientation" ref="434330468b69d0f14b344c672d4778af" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned short <a class="el" href="structlms__image__info.html#434330468b69d0f14b344c672d4778af">lms_image_info::orientation</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00074">74</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="6242d231ae1972fb25bdaeed614d7a63"></a><!-- doxytag: member="lms_image_info::title" ref="6242d231ae1972fb25bdaeed614d7a63" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">lms_image_info::title</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00069">69</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="fbd2df9f6f5f290ac02ce4d803677249"></a><!-- doxytag: member="lms_image_info::width" ref="fbd2df9f6f5f290ac02ce4d803677249" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned short <a class="el" href="structlms__image__info.html#fbd2df9f6f5f290ac02ce4d803677249">lms_image_info::width</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00072">72</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__image__info__coll__graph.dot b/www/api/structlms__image__info__coll__graph.dot
new file mode 100644 (file)
index 0000000..4e907a4
--- /dev/null
@@ -0,0 +1,11 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="{lms_image_info\n|+ id\l+ title\l+ artist\l+ date\l+ width\l+ height\l+ orientation\l+ gps\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="gps",arrowtail="open",fontname="FreeSans"];
+  Node2 [label="{lms_gps_info\n|+ latitude\l+ longitude\l+ altitude\l|}",height=0.2,width=0.4,color="black",URL="$structlms__gps__info.html"];
+  Node3 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="title\nartist",arrowtail="open",fontname="FreeSans"];
+  Node3 [label="{lms_string_size\n|+ str\l+ len\l|}",height=0.2,width=0.4,color="black",URL="$structlms__string__size.html"];
+}
diff --git a/www/api/structlms__image__info__coll__graph.md5 b/www/api/structlms__image__info__coll__graph.md5
new file mode 100644 (file)
index 0000000..78e6de1
--- /dev/null
@@ -0,0 +1 @@
+f13cb7e7d1bb1ff78e8ff47835fb3199
\ No newline at end of file
diff --git a/www/api/structlms__parser__info.html b/www/api/structlms__parser__info.html
new file mode 100644 (file)
index 0000000..ce14ad7
--- /dev/null
@@ -0,0 +1,190 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: lms_parser_info Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>lms_parser_info Struct Reference</h1><!-- doxytag: class="lms_parser_info" --><code>#include &lt;<a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__parser__info.html#5ab9ec0ea57b30e14d5f6f671aac6590">path</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__parser__info.html#8c1195dd47805f8061b3c69691d60029">name</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *const *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__parser__info.html#7ec98aa66587df4215d9d2e1be1efc04">categories</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__parser__info.html#46ca7f8f9d14332d96c34eec8425f92a">description</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__parser__info.html#49c7d15bae321ad3c899823f4348cf59">version</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *const *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__parser__info.html#c22d79b37c4c2d513eaeb3b618f524bf">authors</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__parser__info.html#3f567c146a83ca281ae431e060ab55a9">uri</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00198">198</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="c22d79b37c4c2d513eaeb3b618f524bf"></a><!-- doxytag: member="lms_parser_info::authors" ref="c22d79b37c4c2d513eaeb3b618f524bf" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* const* <a class="el" href="structlms__parser__info.html#c22d79b37c4c2d513eaeb3b618f524bf">lms_parser_info::authors</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00204">204</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00699">lms_parser_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="7ec98aa66587df4215d9d2e1be1efc04"></a><!-- doxytag: member="lms_parser_info::categories" ref="7ec98aa66587df4215d9d2e1be1efc04" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* const* <a class="el" href="structlms__parser__info.html#7ec98aa66587df4215d9d2e1be1efc04">lms_parser_info::categories</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00201">201</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00699">lms_parser_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="46ca7f8f9d14332d96c34eec8425f92a"></a><!-- doxytag: member="lms_parser_info::description" ref="46ca7f8f9d14332d96c34eec8425f92a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="structlms__parser__info.html#46ca7f8f9d14332d96c34eec8425f92a">lms_parser_info::description</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00202">202</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00699">lms_parser_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="8c1195dd47805f8061b3c69691d60029"></a><!-- doxytag: member="lms_parser_info::name" ref="8c1195dd47805f8061b3c69691d60029" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="structlms__parser__info.html#8c1195dd47805f8061b3c69691d60029">lms_parser_info::name</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00200">200</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00699">lms_parser_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="5ab9ec0ea57b30e14d5f6f671aac6590"></a><!-- doxytag: member="lms_parser_info::path" ref="5ab9ec0ea57b30e14d5f6f671aac6590" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="structlms__parser__info.html#5ab9ec0ea57b30e14d5f6f671aac6590">lms_parser_info::path</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00199">199</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00699">lms_parser_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="3f567c146a83ca281ae431e060ab55a9"></a><!-- doxytag: member="lms_parser_info::uri" ref="3f567c146a83ca281ae431e060ab55a9" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="structlms__parser__info.html#3f567c146a83ca281ae431e060ab55a9">lms_parser_info::uri</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00205">205</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00699">lms_parser_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="49c7d15bae321ad3c899823f4348cf59"></a><!-- doxytag: member="lms_parser_info::version" ref="49c7d15bae321ad3c899823f4348cf59" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="structlms__parser__info.html#49c7d15bae321ad3c899823f4348cf59">lms_parser_info::version</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00203">203</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00699">lms_parser_info()</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__playlist__info.html b/www/api/structlms__playlist__info.html
new file mode 100644 (file)
index 0000000..36a83f7
--- /dev/null
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: lms_playlist_info Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>lms_playlist_info Struct Reference<br>
+<small>
+[<a class="el" href="group__LMS__DB.html">DataBase-API</a>]</small>
+</h1><!-- doxytag: class="lms_playlist_info" --><code>#include &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for lms_playlist_info:</div>
+<div class="dynsection">
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">id</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">title</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__playlist__info.html#81cc52f5b6ce04cd64cf3884cb774663">n_entries</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00119">119</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="c1b12bb87ec0bdbc356a6f6ce9b7eebf"></a><!-- doxytag: member="lms_playlist_info::id" ref="c1b12bb87ec0bdbc356a6f6ce9b7eebf" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int64_t <a class="el" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">lms_playlist_info::id</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00120">120</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00257">lms_db_playlist_add()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="81cc52f5b6ce04cd64cf3884cb774663"></a><!-- doxytag: member="lms_playlist_info::n_entries" ref="81cc52f5b6ce04cd64cf3884cb774663" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned int <a class="el" href="structlms__playlist__info.html#81cc52f5b6ce04cd64cf3884cb774663">lms_playlist_info::n_entries</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00122">122</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="515e63ba413a60d21ee73687151387f0"></a><!-- doxytag: member="lms_playlist_info::title" ref="515e63ba413a60d21ee73687151387f0" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">lms_playlist_info::title</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00121">121</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__playlist__info__coll__graph.dot b/www/api/structlms__playlist__info__coll__graph.dot
new file mode 100644 (file)
index 0000000..d91a3c3
--- /dev/null
@@ -0,0 +1,9 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="{lms_playlist_info\n|+ id\l+ title\l+ n_entries\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="title",arrowtail="open",fontname="FreeSans"];
+  Node2 [label="{lms_string_size\n|+ str\l+ len\l|}",height=0.2,width=0.4,color="black",URL="$structlms__string__size.html"];
+}
diff --git a/www/api/structlms__playlist__info__coll__graph.md5 b/www/api/structlms__playlist__info__coll__graph.md5
new file mode 100644 (file)
index 0000000..3136bd9
--- /dev/null
@@ -0,0 +1 @@
+b7a20514412cb022593278aa681c52a1
\ No newline at end of file
diff --git a/www/api/structlms__plugin.html b/www/api/structlms__plugin.html
new file mode 100644 (file)
index 0000000..8103bbe
--- /dev/null
@@ -0,0 +1,188 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: lms_plugin Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>lms_plugin Struct Reference</h1><!-- doxytag: class="lms_plugin" --><code>#include &lt;<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">name</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">lms_plugin_match_fn_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">match</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lms_plugin_parse_fn_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">parse</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lms_plugin_close_fn_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">close</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lms_plugin_setup_fn_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">setup</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lms_plugin_start_fn_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">start</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lms_plugin_finish_fn_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">finish</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00167">167</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="4921b3b79c7ecdddbe9f1a7c9f5019c7"></a><!-- doxytag: member="lms_plugin::close" ref="4921b3b79c7ecdddbe9f1a7c9f5019c7" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lms_plugin_close_fn_t</a> <a class="el" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">lms_plugin::close</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+close plugin 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00171">171</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="839d286e12caa0711f3987adb4b803f0"></a><!-- doxytag: member="lms_plugin::finish" ref="839d286e12caa0711f3987adb4b803f0" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lms_plugin_finish_fn_t</a> <a class="el" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">lms_plugin::finish</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+finish plugin 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00174">174</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00345">lms_parsers_finish()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="5b532e6e50911f02fd9e123489c62a0f"></a><!-- doxytag: member="lms_plugin::match" ref="5b532e6e50911f02fd9e123489c62a0f" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">lms_plugin_match_fn_t</a> <a class="el" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">lms_plugin::match</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+check match 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00169">169</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="2048d92b3d8918a6a2bb2cf39a375e9a"></a><!-- doxytag: member="lms_plugin::name" ref="2048d92b3d8918a6a2bb2cf39a375e9a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">lms_plugin::name</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+plugin name 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00168">168</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00345">lms_parsers_finish()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="0d3361b489eb7c7c4ecc7917c0390b9e"></a><!-- doxytag: member="lms_plugin::parse" ref="0d3361b489eb7c7c4ecc7917c0390b9e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lms_plugin_parse_fn_t</a> <a class="el" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">lms_plugin::parse</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+parse matched file 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00170">170</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00387">lms_parsers_run()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="aeff2e030242ffdf3bdc512a5ef6cbec"></a><!-- doxytag: member="lms_plugin::setup" ref="aeff2e030242ffdf3bdc512a5ef6cbec" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lms_plugin_setup_fn_t</a> <a class="el" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">lms_plugin::setup</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+setup (1st phase init) 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00172">172</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="b3dffd208749a53ad2eb5ffb6d1b7d07"></a><!-- doxytag: member="lms_plugin::start" ref="b3dffd208749a53ad2eb5ffb6d1b7d07" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lms_plugin_start_fn_t</a> <a class="el" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">lms_plugin::start</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+start (2nd phase init) 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00173">173</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__plugin__info.html b/www/api/structlms__plugin__info.html
new file mode 100644 (file)
index 0000000..e909787
--- /dev/null
@@ -0,0 +1,169 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: lms_plugin_info Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>lms_plugin_info Struct Reference</h1><!-- doxytag: class="lms_plugin_info" --><code>#include &lt;<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin__info.html#fad60ec7f8d34b2082b353a03e2cb836">name</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *const *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin__info.html#d5fd907e4bcc553eb9474aa132435c9c">categories</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin__info.html#2e1df9478dd1f9dc62e81e208a2ebd3e">description</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin__info.html#032d3fd2490ad7907e1ea27abad59915">version</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *const *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin__info.html#5dd799fc0e3dd7e798f053ecf773e59a">authors</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin__info.html#8f5826185c7cb3a4155fca8683b817e2">uri</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00177">177</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="5dd799fc0e3dd7e798f053ecf773e59a"></a><!-- doxytag: member="lms_plugin_info::authors" ref="5dd799fc0e3dd7e798f053ecf773e59a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* const* <a class="el" href="structlms__plugin__info.html#5dd799fc0e3dd7e798f053ecf773e59a">lms_plugin_info::authors</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+NULL-terminated author array 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00182">182</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00699">lms_parser_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="d5fd907e4bcc553eb9474aa132435c9c"></a><!-- doxytag: member="lms_plugin_info::categories" ref="d5fd907e4bcc553eb9474aa132435c9c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* const* <a class="el" href="structlms__plugin__info.html#d5fd907e4bcc553eb9474aa132435c9c">lms_plugin_info::categories</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+NULL-terminated categories array 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00179">179</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00699">lms_parser_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="2e1df9478dd1f9dc62e81e208a2ebd3e"></a><!-- doxytag: member="lms_plugin_info::description" ref="2e1df9478dd1f9dc62e81e208a2ebd3e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="structlms__plugin__info.html#2e1df9478dd1f9dc62e81e208a2ebd3e">lms_plugin_info::description</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+free text description 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00180">180</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00699">lms_parser_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="fad60ec7f8d34b2082b353a03e2cb836"></a><!-- doxytag: member="lms_plugin_info::name" ref="fad60ec7f8d34b2082b353a03e2cb836" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="structlms__plugin__info.html#fad60ec7f8d34b2082b353a03e2cb836">lms_plugin_info::name</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+plugin name, should be same as <a class="el" href="structlms__plugin.html">lms_plugin</a> 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00178">178</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00699">lms_parser_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="8f5826185c7cb3a4155fca8683b817e2"></a><!-- doxytag: member="lms_plugin_info::uri" ref="8f5826185c7cb3a4155fca8683b817e2" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="structlms__plugin__info.html#8f5826185c7cb3a4155fca8683b817e2">lms_plugin_info::uri</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+how to find who wrote it (bug reports, etc) 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00183">183</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00699">lms_parser_info()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="032d3fd2490ad7907e1ea27abad59915"></a><!-- doxytag: member="lms_plugin_info::version" ref="032d3fd2490ad7907e1ea27abad59915" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="structlms__plugin__info.html#032d3fd2490ad7907e1ea27abad59915">lms_plugin_info::version</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+version string 
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00181">181</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00699">lms_parser_info()</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__string__size.html b/www/api/structlms__string__size.html
new file mode 100644 (file)
index 0000000..9571459
--- /dev/null
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: lms_string_size Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>lms_string_size Struct Reference</h1><!-- doxytag: class="lms_string_size" --><code>#include &lt;<a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00049">49</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="fc37b712d71c2010e655bbd4f0a22e96"></a><!-- doxytag: member="lms_string_size::len" ref="fc37b712d71c2010e655bbd4f0a22e96" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned int <a class="el" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">lms_string_size::len</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00051">51</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__utils_8c-source.html#l00114">lms_string_size_strip_and_free()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="5f4844463b193dadb2286e69200ce8a7"></a><!-- doxytag: member="lms_string_size::str" ref="5f4844463b193dadb2286e69200ce8a7" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char* <a class="el" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">lms_string_size::str</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00050">50</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__utils_8c-source.html#l00114">lms_string_size_strip_and_free()</a>, and <a class="el" href="lightmediascanner__utils_8c-source.html#l00138">lms_which_extension()</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__video__info.html b/www/api/structlms__video__info.html
new file mode 100644 (file)
index 0000000..ab5692e
--- /dev/null
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: lms_video_info Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>lms_video_info Struct Reference<br>
+<small>
+[<a class="el" href="group__LMS__DB.html">DataBase-API</a>]</small>
+</h1><!-- doxytag: class="lms_video_info" --><code>#include &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for lms_video_info:</div>
+<div class="dynsection">
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">id</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">title</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">artist</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00105">105</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="c0bfe0cf4fe29e3c24a6df4248c7640e"></a><!-- doxytag: member="lms_video_info::artist" ref="c0bfe0cf4fe29e3c24a6df4248c7640e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">lms_video_info::artist</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00108">108</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="12b5bc5f8b13bdcb3ee1e919a1e05822"></a><!-- doxytag: member="lms_video_info::id" ref="12b5bc5f8b13bdcb3ee1e919a1e05822" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int64_t <a class="el" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">lms_video_info::id</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00106">106</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__video_8c-source.html#l00269">lms_db_video_add()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="f3b8a8168ec317daef65da3b06f72bc0"></a><!-- doxytag: member="lms_video_info::title" ref="f3b8a8168ec317daef65da3b06f72bc0" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">lms_video_info::title</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00107">107</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__video__info__coll__graph.dot b/www/api/structlms__video__info__coll__graph.dot
new file mode 100644 (file)
index 0000000..e09cf5a
--- /dev/null
@@ -0,0 +1,9 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="{lms_video_info\n|+ id\l+ title\l+ artist\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="title\nartist",arrowtail="open",fontname="FreeSans"];
+  Node2 [label="{lms_string_size\n|+ str\l+ len\l|}",height=0.2,width=0.4,color="black",URL="$structlms__string__size.html"];
+}
diff --git a/www/api/structlms__video__info__coll__graph.md5 b/www/api/structlms__video__info__coll__graph.md5
new file mode 100644 (file)
index 0000000..dd83e5f
--- /dev/null
@@ -0,0 +1 @@
+78962464673adb7a2530d7a11a7ee9cf
\ No newline at end of file
diff --git a/www/api/structparser.html b/www/api/structparser.html
new file mode 100644 (file)
index 0000000..af0402c
--- /dev/null
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: parser Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>parser Struct Reference</h1><!-- doxytag: class="parser" --><code>#include &lt;<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for parser:</div>
+<div class="dynsection">
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__plugin.html">lms_plugin_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">dl_handle</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00070">70</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="3dd2a049d1cd9229ec33645e28803e0a"></a><!-- doxytag: member="parser::dl_handle" ref="3dd2a049d1cd9229ec33645e28803e0a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* <a class="el" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">parser::dl_handle</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00072">72</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="6c71e3299d4bac660320e7ca935f9b32"></a><!-- doxytag: member="parser::plugin" ref="6c71e3299d4bac660320e7ca935f9b32" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structlms__plugin.html">lms_plugin_t</a>* <a class="el" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">parser::plugin</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00071">71</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00221">lms_parser_add()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00334">lms_parser_del()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00345">lms_parsers_finish()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00387">lms_parsers_run()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="f29cac42dbdf498606fae3f5b9fc3762"></a><!-- doxytag: member="parser::so_path" ref="f29cac42dbdf498606fae3f5b9fc3762" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char* <a class="el" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">parser::so_path</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00073">73</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00279">lms_parser_find_and_add()</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structparser__coll__graph.dot b/www/api/structparser__coll__graph.dot
new file mode 100644 (file)
index 0000000..e42e497
--- /dev/null
@@ -0,0 +1,9 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="{parser\n|+ plugin\l+ dl_handle\l+ so_path\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="plugin",arrowtail="open",fontname="FreeSans"];
+  Node2 [label="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}",height=0.2,width=0.4,color="black",URL="$structlms__plugin.html"];
+}
diff --git a/www/api/structparser__coll__graph.md5 b/www/api/structparser__coll__graph.md5
new file mode 100644 (file)
index 0000000..2150600
--- /dev/null
@@ -0,0 +1 @@
+e7397971eaf726aff289a61b6f99e28e
\ No newline at end of file
diff --git a/www/api/structpinfo.html b/www/api/structpinfo.html
new file mode 100644 (file)
index 0000000..a3a40aa
--- /dev/null
@@ -0,0 +1,152 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: pinfo Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>pinfo Struct Reference</h1><!-- doxytag: class="pinfo" --><code>#include &lt;<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for pinfo:</div>
+<div class="dynsection">
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structcinfo.html">cinfo</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">pid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structfds.html">fds</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structfds.html">fds</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct pollfd&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00054">54</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="d31b28f6373d19531cd208c4c2a71a51"></a><!-- doxytag: member="pinfo::child" ref="d31b28f6373d19531cd208c4c2a71a51" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">pid_t <a class="el" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">pinfo::child</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00056">56</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00634">lms_create_slave()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00671">lms_finish_slave()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00694">lms_restart_slave()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="46a4fc606bd47def48714760afcbc18b"></a><!-- doxytag: member="pinfo::common" ref="46a4fc606bd47def48714760afcbc18b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structcinfo.html">cinfo</a> <a class="el" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">pinfo::common</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00055">55</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00634">lms_create_slave()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01005">lms_process()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="246dfd29e81101866ccb01cc70224156"></a><!-- doxytag: member="pinfo::master" ref="246dfd29e81101866ccb01cc70224156" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structfds.html">fds</a> <a class="el" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">pinfo::master</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00057">57</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00596">lms_close_pipes()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00607">lms_create_pipes()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00634">lms_create_slave()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00671">lms_finish_slave()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="ee9c21ae165e7daf968a7ed87c736076"></a><!-- doxytag: member="pinfo::poll" ref="ee9c21ae165e7daf968a7ed87c736076" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct pollfd <a class="el" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">pinfo::poll</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00059">59</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00607">lms_create_pipes()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00694">lms_restart_slave()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="62bbc538af7f9e1d6aa9073458d5cc52"></a><!-- doxytag: member="pinfo::slave" ref="62bbc538af7f9e1d6aa9073458d5cc52" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structfds.html">fds</a> <a class="el" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">pinfo::slave</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00058">58</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00596">lms_close_pipes()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00607">lms_create_pipes()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00634">lms_create_slave()</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structpinfo__coll__graph.dot b/www/api/structpinfo__coll__graph.dot
new file mode 100644 (file)
index 0000000..179d231
--- /dev/null
@@ -0,0 +1,19 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="{pinfo\n|+ common\l+ child\l+ master\l+ slave\l+ poll\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="common",arrowtail="open",fontname="FreeSans"];
+  Node2 [label="{cinfo\n|+ lms\l|}",height=0.2,width=0.4,color="black",URL="$structcinfo.html"];
+  Node3 -> Node2 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="lms",arrowtail="open",fontname="FreeSans"];
+  Node3 [label="{lms\n|+ parsers\l+ n_parsers\l+ cs_conv\l+ db_path\l+ slave_timeout\l+ cb\l+ data\l+ free_data\l+ progress\l+ commit_interval\l+ is_processing\l+ stop_processing\l|}",height=0.2,width=0.4,color="black",URL="$structlms.html"];
+  Node4 -> Node3 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="cs_conv",arrowtail="open",fontname="FreeSans"];
+  Node4 [label="{lms_charset_conv\n|+ check\l+ fallback\l+ size\l+ convs\l+ names\l|}",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node3 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="parsers",arrowtail="open",fontname="FreeSans"];
+  Node5 [label="{parser\n|+ plugin\l+ dl_handle\l+ so_path\l|}",height=0.2,width=0.4,color="black",URL="$structparser.html"];
+  Node6 -> Node5 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="plugin",arrowtail="open",fontname="FreeSans"];
+  Node6 [label="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}",height=0.2,width=0.4,color="black",URL="$structlms__plugin.html"];
+  Node7 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="slave\nmaster",arrowtail="open",fontname="FreeSans"];
+  Node7 [label="{fds\n|+ r\l+ w\l|}",height=0.2,width=0.4,color="black",URL="$structfds.html"];
+}
diff --git a/www/api/structpinfo__coll__graph.md5 b/www/api/structpinfo__coll__graph.md5
new file mode 100644 (file)
index 0000000..a298e0c
--- /dev/null
@@ -0,0 +1 @@
+774bb858e0f8d60477c1f6669828444c
\ No newline at end of file
diff --git a/www/api/structsinfo.html b/www/api/structsinfo.html
new file mode 100644 (file)
index 0000000..8c6d8d4
--- /dev/null
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: sinfo Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>sinfo Struct Reference</h1><!-- doxytag: class="sinfo" --><code>#include &lt;<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for sinfo:</div>
+<div class="dynsection">
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structcinfo.html">cinfo</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">common</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">db</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">db</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void **&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">parser_match</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00063">63</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="4dc79e3c97d069939b8ba2d65d85fa1f"></a><!-- doxytag: member="sinfo::commit_counter" ref="4dc79e3c97d069939b8ba2d65d85fa1f" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">sinfo::commit_counter</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00067">67</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00949">lms_check_single_process()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01047">lms_process_single_process()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="aa9d846b49c394348027d31e49c535be"></a><!-- doxytag: member="sinfo::common" ref="aa9d846b49c394348027d31e49c535be" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structcinfo.html">cinfo</a> <a class="el" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">sinfo::common</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00064">64</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00949">lms_check_single_process()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01047">lms_process_single_process()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="e15c5adc74f2f712a8becebff37a06d4"></a><!-- doxytag: member="sinfo::db" ref="e15c5adc74f2f712a8becebff37a06d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">db</a>* <a class="el" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">sinfo::db</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00065">65</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01047">lms_process_single_process()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="453d67e0467608c10700c7217cfe19fd"></a><!-- doxytag: member="sinfo::parser_match" ref="453d67e0467608c10700c7217cfe19fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void** <a class="el" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">sinfo::parser_match</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00066">66</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01047">lms_process_single_process()</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 22 23:56:01 2009 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>
diff --git a/www/api/structsinfo__coll__graph.dot b/www/api/structsinfo__coll__graph.dot
new file mode 100644 (file)
index 0000000..8366a6c
--- /dev/null
@@ -0,0 +1,19 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="{sinfo\n|+ common\l+ db\l+ parser_match\l+ commit_counter\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="common",arrowtail="open",fontname="FreeSans"];
+  Node2 [label="{cinfo\n|+ lms\l|}",height=0.2,width=0.4,color="black",URL="$structcinfo.html"];
+  Node3 -> Node2 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="lms",arrowtail="open",fontname="FreeSans"];
+  Node3 [label="{lms\n|+ parsers\l+ n_parsers\l+ cs_conv\l+ db_path\l+ slave_timeout\l+ cb\l+ data\l+ free_data\l+ progress\l+ commit_interval\l+ is_processing\l+ stop_processing\l|}",height=0.2,width=0.4,color="black",URL="$structlms.html"];
+  Node4 -> Node3 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="cs_conv",arrowtail="open",fontname="FreeSans"];
+  Node4 [label="{lms_charset_conv\n|+ check\l+ fallback\l+ size\l+ convs\l+ names\l|}",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node3 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="parsers",arrowtail="open",fontname="FreeSans"];
+  Node5 [label="{parser\n|+ plugin\l+ dl_handle\l+ so_path\l|}",height=0.2,width=0.4,color="black",URL="$structparser.html"];
+  Node6 -> Node5 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="plugin",arrowtail="open",fontname="FreeSans"];
+  Node6 [label="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}",height=0.2,width=0.4,color="black",URL="$structlms__plugin.html"];
+  Node7 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="db",arrowtail="open",fontname="FreeSans"];
+  Node7 [label="{db\n|+ handle\l+ transaction_begin\l+ transaction_commit\l+ get_file_info\l+ insert_file_info\l+ update_file_info\l+ delete_file_info\l+ set_file_dtime\l|}",height=0.2,width=0.4,color="grey75"];
+}
diff --git a/www/api/structsinfo__coll__graph.md5 b/www/api/structsinfo__coll__graph.md5
new file mode 100644 (file)
index 0000000..8a1c217
--- /dev/null
@@ -0,0 +1 @@
+4b1285d521896edc3e963f2af3806bbb
\ No newline at end of file
diff --git a/www/api/tab_b.gif b/www/api/tab_b.gif
new file mode 100644 (file)
index 0000000..0d62348
Binary files /dev/null and b/www/api/tab_b.gif differ
diff --git a/www/api/tab_l.gif b/www/api/tab_l.gif
new file mode 100644 (file)
index 0000000..9b1e633
Binary files /dev/null and b/www/api/tab_l.gif differ
diff --git a/www/api/tab_r.gif b/www/api/tab_r.gif
new file mode 100644 (file)
index 0000000..ce9dd9f
Binary files /dev/null and b/www/api/tab_r.gif differ
diff --git a/www/api/tabs.css b/www/api/tabs.css
new file mode 100644 (file)
index 0000000..ab02c62
--- /dev/null
@@ -0,0 +1,105 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+   float            : left;
+   width            : 100%;
+   background       : url("tab_b.gif") repeat-x bottom;
+   margin-bottom    : 4px;
+}
+
+DIV.tabs UL
+{
+   margin           : 0px;
+   padding-left     : 10px;
+   list-style       : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+   display          : inline;
+   margin           : 0px;
+   padding          : 0px;
+}
+
+DIV.tabs FORM
+{
+   float            : right;
+}
+
+DIV.tabs A
+{
+   float            : left;
+   background       : url("tab_r.gif") no-repeat right top;
+   border-bottom    : 1px solid #84B0C7;
+   font-size        : 80%;
+   font-weight      : bold;
+   text-decoration  : none;
+}
+
+DIV.tabs A:hover
+{
+   background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+       color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+   float            : left;
+   display          : block;
+   background       : url("tab_l.gif") no-repeat left top;
+   padding          : 5px 9px;
+   white-space      : nowrap;
+}
+
+DIV.tabs INPUT
+{
+   float            : right;
+   display          : inline;
+   font-size        : 1em;
+}
+
+DIV.tabs TD
+{
+   font-size        : 80%;
+   font-weight      : bold;
+   text-decoration  : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+   background-position: 0% -150px;
+}
+
+DIV.tabs LI.current A
+{
+   background-position: 100% -150px;
+   border-width     : 0px;
+}
+
+DIV.tabs LI.current SPAN
+{
+   background-position: 0% -150px;
+   padding-bottom   : 6px;
+}
+
+DIV.navpath
+{
+   background       : none;
+   border           : none;
+   border-bottom    : 1px solid #84B0C7;
+   text-align       : center;
+   margin           : 2px;
+   padding          : 2px;
+}
diff --git a/www/python-api/api-objects.txt b/www/python-api/api-objects.txt
new file mode 100644 (file)
index 0000000..7adf9fe
--- /dev/null
@@ -0,0 +1,62 @@
+lightmediascanner      lightmediascanner-module.html
+lightmediascanner.LMS_PROGRESS_STATUS_UP_TO_DATE       lightmediascanner-module.html#LMS_PROGRESS_STATUS_UP_TO_DATE
+lightmediascanner.LMS_PROGRESS_STATUS_PROCESSED        lightmediascanner-module.html#LMS_PROGRESS_STATUS_PROCESSED
+lightmediascanner.LMS_PROGRESS_STATUS_ERROR_PARSE      lightmediascanner-module.html#LMS_PROGRESS_STATUS_ERROR_PARSE
+lightmediascanner.__package__  lightmediascanner-module.html#__package__
+lightmediascanner.LMS_PROGRESS_STATUS_KILLED   lightmediascanner-module.html#LMS_PROGRESS_STATUS_KILLED
+lightmediascanner.LMS_PROGRESS_STATUS_ERROR_COMM       lightmediascanner-module.html#LMS_PROGRESS_STATUS_ERROR_COMM
+lightmediascanner.LMS_PROGRESS_STATUS_SKIPPED  lightmediascanner-module.html#LMS_PROGRESS_STATUS_SKIPPED
+lightmediascanner.LMS_PROGRESS_STATUS_DELETED  lightmediascanner-module.html#LMS_PROGRESS_STATUS_DELETED
+lightmediascanner.c_lightmediascanner  lightmediascanner.c_lightmediascanner-module.html
+lightmediascanner.c_lightmediascanner.parser_info      lightmediascanner.c_lightmediascanner-module.html#parser_info
+lightmediascanner.c_lightmediascanner.parsers_list_by_category lightmediascanner.c_lightmediascanner-module.html#parsers_list_by_category
+lightmediascanner.c_lightmediascanner.parser_info_find lightmediascanner.c_lightmediascanner-module.html#parser_info_find
+lightmediascanner.c_lightmediascanner.parsers_list     lightmediascanner.c_lightmediascanner-module.html#parsers_list
+lightmediascanner.c_lightmediascanner.__package__      lightmediascanner.c_lightmediascanner-module.html#__package__
+lightmediascanner.c_lightmediascanner.__bootstrap__    lightmediascanner.c_lightmediascanner-module.html#__bootstrap__
+lightmediascanner.c_lightmediascanner.LightMediaScanner        lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html
+lightmediascanner.c_lightmediascanner.LightMediaScanner.process        lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#process
+lightmediascanner.c_lightmediascanner.LightMediaScanner.set_slave_timeout      lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_slave_timeout
+lightmediascanner.c_lightmediascanner.LightMediaScanner.__str__        lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__str__
+lightmediascanner.c_lightmediascanner.LightMediaScanner.commit_interval        lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#commit_interval
+lightmediascanner.c_lightmediascanner.LightMediaScanner.parsers        lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parsers
+lightmediascanner.c_lightmediascanner.LightMediaScanner.check  lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#check
+lightmediascanner.c_lightmediascanner.LightMediaScanner.__init__       lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__init__
+lightmediascanner.c_lightmediascanner.LightMediaScanner.get_commit_interval    lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#get_commit_interval
+lightmediascanner.c_lightmediascanner.LightMediaScanner.__new__        lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__new__
+lightmediascanner.c_lightmediascanner.LightMediaScanner.slave_timeout  lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#slave_timeout
+lightmediascanner.c_lightmediascanner.LightMediaScanner.process_single_process lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#process_single_process
+lightmediascanner.c_lightmediascanner.LightMediaScanner.stop_processing        lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#stop_processing
+lightmediascanner.c_lightmediascanner.LightMediaScanner.set_progress_callback  lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_progress_callback
+lightmediascanner.c_lightmediascanner.LightMediaScanner.charset_add    lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_add
+lightmediascanner.c_lightmediascanner.LightMediaScanner.get_slave_timeout      lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#get_slave_timeout
+lightmediascanner.c_lightmediascanner.LightMediaScanner.is_processing  lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#is_processing
+lightmediascanner.c_lightmediascanner.LightMediaScanner.db_path        lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#db_path
+lightmediascanner.c_lightmediascanner.LightMediaScanner.charset_del    lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_del
+lightmediascanner.c_lightmediascanner.LightMediaScanner.parser_add     lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_add
+lightmediascanner.c_lightmediascanner.LightMediaScanner.parsers_clear  lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parsers_clear
+lightmediascanner.c_lightmediascanner.LightMediaScanner.parser_find_and_add    lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_find_and_add
+lightmediascanner.c_lightmediascanner.LightMediaScanner.parser_del     lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_del
+lightmediascanner.c_lightmediascanner.LightMediaScanner.set_commit_interval    lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_commit_interval
+lightmediascanner.c_lightmediascanner.LightMediaScanner.check_single_process   lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#check_single_process
+lightmediascanner.c_lightmediascanner.LightMediaScanner.__repr__       lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__repr__
+lightmediascanner.c_lightmediascanner.LightMediaScanner.delete lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#delete
+lightmediascanner.c_lightmediascanner.Parser   lightmediascanner.c_lightmediascanner.Parser-class.html
+lightmediascanner.c_lightmediascanner.Parser.__new__   lightmediascanner.c_lightmediascanner.Parser-class.html#__new__
+lightmediascanner.c_lightmediascanner.Parser.__str__   lightmediascanner.c_lightmediascanner.Parser-class.html#__str__
+lightmediascanner.c_lightmediascanner.Parser.name      lightmediascanner.c_lightmediascanner.Parser-class.html#name
+lightmediascanner.c_lightmediascanner.Parser.__repr__  lightmediascanner.c_lightmediascanner.Parser-class.html#__repr__
+lightmediascanner.c_lightmediascanner.Parser.delete    lightmediascanner.c_lightmediascanner.Parser-class.html#delete
+lightmediascanner.c_lightmediascanner.Parser.__init__  lightmediascanner.c_lightmediascanner.Parser-class.html#__init__
+lightmediascanner.c_lightmediascanner.Parser.scanner   lightmediascanner.c_lightmediascanner.Parser-class.html#scanner
+lightmediascanner.c_lightmediascanner.ParserInfo       lightmediascanner.c_lightmediascanner.ParserInfo-class.html
+lightmediascanner.c_lightmediascanner.ParserInfo.__new__       lightmediascanner.c_lightmediascanner.ParserInfo-class.html#__new__
+lightmediascanner.c_lightmediascanner.ParserInfo.__str__       lightmediascanner.c_lightmediascanner.ParserInfo-class.html#__str__
+lightmediascanner.c_lightmediascanner.ParserInfo.uri   lightmediascanner.c_lightmediascanner.ParserInfo-class.html#uri
+lightmediascanner.c_lightmediascanner.ParserInfo.name  lightmediascanner.c_lightmediascanner.ParserInfo-class.html#name
+lightmediascanner.c_lightmediascanner.ParserInfo.version       lightmediascanner.c_lightmediascanner.ParserInfo-class.html#version
+lightmediascanner.c_lightmediascanner.ParserInfo.categories    lightmediascanner.c_lightmediascanner.ParserInfo-class.html#categories
+lightmediascanner.c_lightmediascanner.ParserInfo.authors       lightmediascanner.c_lightmediascanner.ParserInfo-class.html#authors
+lightmediascanner.c_lightmediascanner.ParserInfo.path  lightmediascanner.c_lightmediascanner.ParserInfo-class.html#path
+lightmediascanner.c_lightmediascanner.ParserInfo.__init__      lightmediascanner.c_lightmediascanner.ParserInfo-class.html#__init__
+lightmediascanner.c_lightmediascanner.ParserInfo.description   lightmediascanner.c_lightmediascanner.ParserInfo-class.html#description
diff --git a/www/python-api/class-tree.html b/www/python-api/class-tree.html
new file mode 100644 (file)
index 0000000..97ad3eb
--- /dev/null
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Class Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="class-tree.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Class Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink">object</strong>:
+      <em class="summary">The most base type</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">lightmediascanner.c_lightmediascanner.LightMediaScanner</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html">lightmediascanner.c_lightmediascanner.Parser</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html">lightmediascanner.c_lightmediascanner.ParserInfo</a></strong>
+    </li>
+    </ul>
+    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Thu Apr 23 00:00:40 2009
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/www/python-api/crarr.png b/www/python-api/crarr.png
new file mode 100644 (file)
index 0000000..26b43c5
Binary files /dev/null and b/www/python-api/crarr.png differ
diff --git a/www/python-api/epydoc.css b/www/python-api/epydoc.css
new file mode 100644 (file)
index 0000000..86d4170
--- /dev/null
@@ -0,0 +1,322 @@
+
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc's
+ * HTML output.
+ *
+ */
+
+/* Default Colors & Styles
+ *   - Set the default foreground & background color with 'body'; and 
+ *     link colors with 'a:link' and 'a:visited'.
+ *   - Use bold for decision list terms.
+ *   - The heading styles defined here are used for headings *within*
+ *     docstring descriptions.  All headings used by epydoc itself use
+ *     either class='epydoc' or class='toc' (CSS styles for both
+ *     defined below).
+ */
+body                        { background: #ffffff; color: #000000; }
+p                           { margin-top: 0.5em; margin-bottom: 0.5em; }
+a:link                      { color: #0000ff; }
+a:visited                   { color: #204080; }
+dt                          { font-weight: bold; }
+h1                          { font-size: +140%; font-style: italic;
+                              font-weight: bold; }
+h2                          { font-size: +125%; font-style: italic;
+                              font-weight: bold; }
+h3                          { font-size: +110%; font-style: italic;
+                              font-weight: normal; }
+code                        { font-size: 100%; }
+/* N.B.: class, not pseudoclass */
+a.link                      { font-family: monospace; }
+/* Page Header & Footer
+ *   - The standard page header consists of a navigation bar (with
+ *     pointers to standard pages such as 'home' and 'trees'); a
+ *     breadcrumbs list, which can be used to navigate to containing
+ *     classes or modules; options links, to show/hide private
+ *     variables and to show/hide frames; and a page title (using
+ *     <h1>).  The page title may be followed by a link to the
+ *     corresponding source code (using 'span.codelink').
+ *   - The footer consists of a navigation bar, a timestamp, and a
+ *     pointer to epydoc's homepage.
+ */ 
+h1.epydoc                   { margin: 0; font-size: +140%; font-weight: bold; }
+h2.epydoc                   { font-size: +130%; font-weight: bold; }
+h3.epydoc                   { font-size: +115%; font-weight: bold;
+                              margin-top: 0.2em; }
+td h3.epydoc                { font-size: +115%; font-weight: bold;
+                              margin-bottom: 0; }
+table.navbar                { background: #a0c0ff; color: #000000;
+                              border: 2px groove #c0d0d0; }
+table.navbar table          { color: #000000; }
+th.navbar-select            { background: #70b0ff;
+                              color: #000000; } 
+table.navbar a              { text-decoration: none; }  
+table.navbar a:link         { color: #0000ff; }
+table.navbar a:visited      { color: #204080; }
+span.breadcrumbs            { font-size: 85%; font-weight: bold; }
+span.options                { font-size: 70%; }
+span.codelink               { font-size: 85%; }
+td.footer                   { font-size: 85%; }
+
+/* Table Headers
+ *   - Each summary table and details section begins with a 'header'
+ *     row.  This row contains a section title (marked by
+ *     'span.table-header') as well as a show/hide private link
+ *     (marked by 'span.options', defined above).
+ *   - Summary tables that contain user-defined groups mark those
+ *     groups using 'group header' rows.
+ */
+td.table-header             { background: #70b0ff; color: #000000;
+                              border: 1px solid #608090; }
+td.table-header table       { color: #000000; }
+td.table-header table a:link      { color: #0000ff; }
+td.table-header table a:visited   { color: #204080; }
+span.table-header           { font-size: 120%; font-weight: bold; }
+th.group-header             { background: #c0e0f8; color: #000000;
+                              text-align: left; font-style: italic; 
+                              font-size: 115%; 
+                              border: 1px solid #608090; }
+
+/* Summary Tables (functions, variables, etc)
+ *   - Each object is described by a single row of the table with
+ *     two cells.  The left cell gives the object's type, and is
+ *     marked with 'code.summary-type'.  The right cell gives the
+ *     object's name and a summary description.
+ *   - CSS styles for the table's header and group headers are
+ *     defined above, under 'Table Headers'
+ */
+table.summary               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin-bottom: 0.5em; }
+td.summary                  { border: 1px solid #608090; }
+code.summary-type           { font-size: 85%; }
+table.summary a:link        { color: #0000ff; }
+table.summary a:visited     { color: #204080; }
+
+
+/* Details Tables (functions, variables, etc)
+ *   - Each object is described in its own div.
+ *   - A single-row summary table w/ table-header is used as
+ *     a header for each details section (CSS style for table-header
+ *     is defined above, under 'Table Headers').
+ */
+table.details               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin: .2em 0 0 0; }
+table.details table         { color: #000000; }
+table.details a:link        { color: #0000ff; }
+table.details a:visited     { color: #204080; }
+
+/* Fields */
+dl.fields                   { margin-left: 2em; margin-top: 1em;
+                              margin-bottom: 1em; }
+dl.fields dd ul             { margin-left: 0em; padding-left: 0em; }
+dl.fields dd ul li ul       { margin-left: 2em; padding-left: 0em; }
+div.fields                  { margin-left: 2em; }
+div.fields p                { margin-bottom: 0.5em; }
+
+/* Index tables (identifier index, term index, etc)
+ *   - link-index is used for indices containing lists of links
+ *     (namely, the identifier index & term index).
+ *   - index-where is used in link indices for the text indicating
+ *     the container/source for each link.
+ *   - metadata-index is used for indices containing metadata
+ *     extracted from fields (namely, the bug index & todo index).
+ */
+table.link-index            { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; }
+td.link-index               { border-width: 0px; }
+table.link-index a:link     { color: #0000ff; }
+table.link-index a:visited  { color: #204080; }
+span.index-where            { font-size: 70%; }
+table.metadata-index        { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; 
+                              margin: .2em 0 0 0; }
+td.metadata-index           { border-width: 1px; border-style: solid; }
+table.metadata-index a:link { color: #0000ff; }
+table.metadata-index a:visited  { color: #204080; }
+
+/* Function signatures
+ *   - sig* is used for the signature in the details section.
+ *   - .summary-sig* is used for the signature in the summary 
+ *     table, and when listing property accessor functions.
+ * */
+.sig-name                   { color: #006080; }
+.sig-arg                    { color: #008060; }
+.sig-default                { color: #602000; }
+.summary-sig                { font-family: monospace; }
+.summary-sig-name           { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:link
+                            { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:visited
+                            { color: #006080; font-weight: bold; }
+.summary-sig-arg            { color: #006040; }
+.summary-sig-default        { color: #501800; }
+
+/* Subclass list
+ */
+ul.subclass-list { display: inline; }
+ul.subclass-list li { display: inline; }
+
+/* To render variables, classes etc. like functions */
+table.summary .summary-name { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+     a.summary-name:link    { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+    a.summary-name:visited  { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+
+/* Variable values
+ *   - In the 'variable details' sections, each varaible's value is
+ *     listed in a 'pre.variable' box.  The width of this box is
+ *     restricted to 80 chars; if the value's repr is longer than
+ *     this it will be wrapped, using a backslash marked with
+ *     class 'variable-linewrap'.  If the value's repr is longer
+ *     than 3 lines, the rest will be ellided; and an ellipsis
+ *     marker ('...' marked with 'variable-ellipsis') will be used.
+ *   - If the value is a string, its quote marks will be marked
+ *     with 'variable-quote'.
+ *   - If the variable is a regexp, it is syntax-highlighted using
+ *     the re* CSS classes.
+ */
+pre.variable                { padding: .5em; margin: 0;
+                              background: #dce4ec; color: #000000;
+                              border: 1px solid #708890; }
+.variable-linewrap          { color: #604000; font-weight: bold; }
+.variable-ellipsis          { color: #604000; font-weight: bold; }
+.variable-quote             { color: #604000; font-weight: bold; }
+.variable-group             { color: #008000; font-weight: bold; }
+.variable-op                { color: #604000; font-weight: bold; }
+.variable-string            { color: #006030; }
+.variable-unknown           { color: #a00000; font-weight: bold; }
+.re                         { color: #000000; }
+.re-char                    { color: #006030; }
+.re-op                      { color: #600000; }
+.re-group                   { color: #003060; }
+.re-ref                     { color: #404040; }
+
+/* Base tree
+ *   - Used by class pages to display the base class hierarchy.
+ */
+pre.base-tree               { font-size: 80%; margin: 0; }
+
+/* Frames-based table of contents headers
+ *   - Consists of two frames: one for selecting modules; and
+ *     the other listing the contents of the selected module.
+ *   - h1.toc is used for each frame's heading
+ *   - h2.toc is used for subheadings within each frame.
+ */
+h1.toc                      { text-align: center; font-size: 105%;
+                              margin: 0; font-weight: bold;
+                              padding: 0; }
+h2.toc                      { font-size: 100%; font-weight: bold; 
+                              margin: 0.5em 0 0 -0.3em; }
+
+/* Syntax Highlighting for Source Code
+ *   - doctest examples are displayed in a 'pre.py-doctest' block.
+ *     If the example is in a details table entry, then it will use
+ *     the colors specified by the 'table pre.py-doctest' line.
+ *   - Source code listings are displayed in a 'pre.py-src' block.
+ *     Each line is marked with 'span.py-line' (used to draw a line
+ *     down the left margin, separating the code from the line
+ *     numbers).  Line numbers are displayed with 'span.py-lineno'.
+ *     The expand/collapse block toggle button is displayed with
+ *     'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
+ *     modify the font size of the text.)
+ *   - If a source code page is opened with an anchor, then the
+ *     corresponding code block will be highlighted.  The code
+ *     block's header is highlighted with 'py-highlight-hdr'; and
+ *     the code block's body is highlighted with 'py-highlight'.
+ *   - The remaining py-* classes are used to perform syntax
+ *     highlighting (py-string for string literals, py-name for names,
+ *     etc.)
+ */
+pre.py-doctest              { padding: .5em; margin: 1em;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #708890; }
+table pre.py-doctest        { background: #dce4ec;
+                              color: #000000; }
+pre.py-src                  { border: 2px solid #000000; 
+                              background: #f0f0f0; color: #000000; }
+.py-line                    { border-left: 2px solid #000000; 
+                              margin-left: .2em; padding-left: .4em; }
+.py-lineno                  { font-style: italic; font-size: 90%;
+                              padding-left: .5em; }
+a.py-toggle                 { text-decoration: none; }
+div.py-highlight-hdr        { border-top: 2px solid #000000;
+                              border-bottom: 2px solid #000000;
+                              background: #d8e8e8; }
+div.py-highlight            { border-bottom: 2px solid #000000;
+                              background: #d0e0e0; }
+.py-prompt                  { color: #005050; font-weight: bold;}
+.py-more                    { color: #005050; font-weight: bold;}
+.py-string                  { color: #006030; }
+.py-comment                 { color: #003060; }
+.py-keyword                 { color: #600000; }
+.py-output                  { color: #404040; }
+.py-name                    { color: #000050; }
+.py-name:link               { color: #000050 !important; }
+.py-name:visited            { color: #000050 !important; }
+.py-number                  { color: #005000; }
+.py-defname                 { color: #000060; font-weight: bold; }
+.py-def-name                { color: #000060; font-weight: bold; }
+.py-base-class              { color: #000060; }
+.py-param                   { color: #000060; }
+.py-docstring               { color: #006030; }
+.py-decorator               { color: #804020; }
+/* Use this if you don't want links to names underlined: */
+/*a.py-name                   { text-decoration: none; }*/
+
+/* Graphs & Diagrams
+ *   - These CSS styles are used for graphs & diagrams generated using
+ *     Graphviz dot.  'img.graph-without-title' is used for bare
+ *     diagrams (to remove the border created by making the image
+ *     clickable).
+ */
+img.graph-without-title     { border: none; }
+img.graph-with-title        { border: 1px solid #000000; }
+span.graph-title            { font-weight: bold; }
+span.graph-caption          { }
+
+/* General-purpose classes
+ *   - 'p.indent-wrapped-lines' defines a paragraph whose first line
+ *     is not indented, but whose subsequent lines are.
+ *   - The 'nomargin-top' class is used to remove the top margin (e.g.
+ *     from lists).  The 'nomargin' class is used to remove both the
+ *     top and bottom margin (but not the left or right margin --
+ *     for lists, that would cause the bullets to disappear.)
+ */
+p.indent-wrapped-lines      { padding: 0 0 0 7em; text-indent: -7em; 
+                              margin: 0; }
+.nomargin-top               { margin-top: 0; }
+.nomargin                   { margin-top: 0; margin-bottom: 0; }
+
+/* HTML Log */
+div.log-block               { padding: 0; margin: .5em 0 .5em 0;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #000000; }
+div.log-error               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffb0b0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-warning             { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffffb0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-info               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #b0ffb0; color: #000000;
+                              border: 1px solid #000000; }
+h2.log-hdr                  { background: #70b0ff; color: #000000;
+                              margin: 0; padding: 0em 0.5em 0em 0.5em;
+                              border-bottom: 1px solid #000000; font-size: 110%; }
+p.log                       { font-weight: bold; margin: .5em 0 .5em 0; }
+tr.opt-changed              { color: #000000; font-weight: bold; }
+tr.opt-default              { color: #606060; }
+pre.log                     { margin: 0; padding: 0; padding-left: 1em; }
diff --git a/www/python-api/epydoc.js b/www/python-api/epydoc.js
new file mode 100644 (file)
index 0000000..e787dbc
--- /dev/null
@@ -0,0 +1,293 @@
+function toggle_private() {
+        // Search for any private/public links on this page.  Store
+        // their old text in "cmd," so we will know what action to
+        // take; and change their text to the opposite action.
+        var cmd = "?";
+        var elts = document.getElementsByTagName("a");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "privatelink") {
+            cmd = elts[i].innerHTML;
+            elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")?
+                                    "hide&nbsp;private":"show&nbsp;private");
+          }
+        }
+        // Update all DIVs containing private objects.
+        var elts = document.getElementsByTagName("div");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+          }
+          else if (elts[i].className == "public") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none");
+          }
+        }
+        // Update all table rows containing private objects.  Note, we
+        // use "" instead of "block" becaue IE & firefox disagree on what
+        // this should be (block vs table-row), and "" just gives the
+        // default for both browsers.
+        var elts = document.getElementsByTagName("tr");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"");
+          }
+        }
+        // Update all list items containing private objects.
+        var elts = document.getElementsByTagName("li");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?
+                                        "none":"");
+          }
+        }
+        // Update all list items containing private objects.
+        var elts = document.getElementsByTagName("ul");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+          }
+        }
+        // Set a cookie to remember the current option.
+        document.cookie = "EpydocPrivate="+cmd;
+      }
+function show_private() {
+        var elts = document.getElementsByTagName("a");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "privatelink") {
+            cmd = elts[i].innerHTML;
+            if (cmd && cmd.substr(0,4)=="show")
+                toggle_private();
+          }
+        }
+      }
+function getCookie(name) {
+        var dc = document.cookie;
+        var prefix = name + "=";
+        var begin = dc.indexOf("; " + prefix);
+        if (begin == -1) {
+          begin = dc.indexOf(prefix);
+          if (begin != 0) return null;
+        } else
+        { begin += 2; }
+        var end = document.cookie.indexOf(";", begin);
+        if (end == -1)
+        { end = dc.length; }
+        return unescape(dc.substring(begin + prefix.length, end));
+      }
+function setFrame(url1, url2) {
+          parent.frames[1].location.href = url1;
+          parent.frames[2].location.href = url2;
+      }
+function checkCookie() {
+        var cmd=getCookie("EpydocPrivate");
+        if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0)
+            toggle_private();
+      }
+function toggleCallGraph(id) {
+        var elt = document.getElementById(id);
+        if (elt.style.display == "none")
+            elt.style.display = "block";
+        else
+            elt.style.display = "none";
+      }
+function expand(id) {
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.style.display = "block";
+  var elt = document.getElementById(id+"-expanded-linenums");
+  if (elt) elt.style.display = "block";
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+  var elt = document.getElementById(id+"-collapsed-linenums");
+  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+  var elt = document.getElementById(id+"-toggle");
+  if (elt) { elt.innerHTML = "-"; }
+}
+
+function collapse(id) {
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.style.display = "none";
+  var elt = document.getElementById(id+"-expanded-linenums");
+  if (elt) elt.style.display = "none";
+  var elt = document.getElementById(id+"-collapsed-linenums");
+  if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; }
+  var elt = document.getElementById(id+"-toggle");
+  if (elt) { elt.innerHTML = "+"; }
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) {
+    elt.style.display = "block";
+    
+    var indent = elt.getAttribute("indent");
+    var pad = elt.getAttribute("pad");
+    var s = "<tt class='py-lineno'>";
+    for (var i=0; i<pad.length; i++) { s += "&nbsp;" }
+    s += "</tt>";
+    s += "&nbsp;&nbsp;<tt class='py-line'>";
+    for (var i=0; i<indent.length; i++) { s += "&nbsp;" }
+    s += "<a href='#' onclick='expand(\"" + id;
+    s += "\");return false'>...</a></tt><br />";
+    elt.innerHTML = s;
+  }
+}
+
+function toggle(id) {
+  elt = document.getElementById(id+"-toggle");
+  if (elt.innerHTML == "-")
+      collapse(id); 
+  else
+      expand(id);
+  return false;
+}
+
+function highlight(id) {
+  var elt = document.getElementById(id+"-def");
+  if (elt) elt.className = "py-highlight-hdr";
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.className = "py-highlight";
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) elt.className = "py-highlight";
+}
+
+function num_lines(s) {
+  var n = 1;
+  var pos = s.indexOf("\n");
+  while ( pos > 0) {
+    n += 1;
+    pos = s.indexOf("\n", pos+1);
+  }
+  return n;
+}
+
+// Collapse all blocks that mave more than `min_lines` lines.
+function collapse_all(min_lines) {
+  var elts = document.getElementsByTagName("div");
+  for (var i=0; i<elts.length; i++) {
+    var elt = elts[i];
+    var split = elt.id.indexOf("-");
+    if (split > 0)
+      if (elt.id.substring(split, elt.id.length) == "-expanded")
+        if (num_lines(elt.innerHTML) > min_lines)
+          collapse(elt.id.substring(0, split));
+  }
+}
+
+function expandto(href) {
+  var start = href.indexOf("#")+1;
+  if (start != 0 && start != href.length) {
+    if (href.substring(start, href.length) != "-") {
+      collapse_all(4);
+      pos = href.indexOf(".", start);
+      while (pos != -1) {
+        var id = href.substring(start, pos);
+        expand(id);
+        pos = href.indexOf(".", pos+1);
+      }
+      var id = href.substring(start, href.length);
+      expand(id);
+      highlight(id);
+    }
+  }
+}
+
+function kill_doclink(id) {
+  var parent = document.getElementById(id);
+  parent.removeChild(parent.childNodes.item(0));
+}
+function auto_kill_doclink(ev) {
+  if (!ev) var ev = window.event;
+  if (!this.contains(ev.toElement)) {
+    var parent = document.getElementById(this.parentID);
+    parent.removeChild(parent.childNodes.item(0));
+  }
+}
+
+function doclink(id, name, targets_id) {
+  var elt = document.getElementById(id);
+
+  // If we already opened the box, then destroy it.
+  // (This case should never occur, but leave it in just in case.)
+  if (elt.childNodes.length > 1) {
+    elt.removeChild(elt.childNodes.item(0));
+  }
+  else {
+    // The outer box: relative + inline positioning.
+    var box1 = document.createElement("div");
+    box1.style.position = "relative";
+    box1.style.display = "inline";
+    box1.style.top = 0;
+    box1.style.left = 0;
+  
+    // A shadow for fun
+    var shadow = document.createElement("div");
+    shadow.style.position = "absolute";
+    shadow.style.left = "-1.3em";
+    shadow.style.top = "-1.3em";
+    shadow.style.background = "#404040";
+    
+    // The inner box: absolute positioning.
+    var box2 = document.createElement("div");
+    box2.style.position = "relative";
+    box2.style.border = "1px solid #a0a0a0";
+    box2.style.left = "-.2em";
+    box2.style.top = "-.2em";
+    box2.style.background = "white";
+    box2.style.padding = ".3em .4em .3em .4em";
+    box2.style.fontStyle = "normal";
+    box2.onmouseout=auto_kill_doclink;
+    box2.parentID = id;
+
+    // Get the targets
+    var targets_elt = document.getElementById(targets_id);
+    var targets = targets_elt.getAttribute("targets");
+    var links = "";
+    target_list = targets.split(",");
+    for (var i=0; i<target_list.length; i++) {
+        var target = target_list[i].split("=");
+        links += "<li><a href='" + target[1] + 
+               "' style='text-decoration:none'>" +
+               target[0] + "</a></li>";
+    }
+  
+    // Put it all together.
+    elt.insertBefore(box1, elt.childNodes.item(0));
+    //box1.appendChild(box2);
+    box1.appendChild(shadow);
+    shadow.appendChild(box2);
+    box2.innerHTML =
+        "Which <b>"+name+"</b> do you want to see documentation for?" +
+        "<ul style='margin-bottom: 0;'>" +
+        links + 
+        "<li><a href='#' style='text-decoration:none' " +
+        "onclick='kill_doclink(\""+id+"\");return false;'>"+
+        "<i>None of the above</i></a></li></ul>";
+  }
+  return false;
+}
+
+function get_anchor() {
+          var href = location.href;
+          var start = href.indexOf("#")+1;
+          if ((start != 0) && (start != href.length))
+              return href.substring(start, href.length);
+      }
+function redirect_url(dottedName) {
+          // Scan through each element of the "pages" list, and check
+          // if "name" matches with any of them.
+          for (var i=0; i<pages.length; i++) {
+
+              // Each page has the form "<pagename>-m" or "<pagename>-c";
+              // extract the <pagename> portion & compare it to dottedName.
+              var pagename = pages[i].substring(0, pages[i].length-2);
+              if (pagename == dottedName.substring(0,pagename.length)) {
+
+                  // We've found a page that matches `dottedName`;
+                  // construct its URL, using leftover `dottedName`
+                  // content to form an anchor.
+                  var pagetype = pages[i].charAt(pages[i].length-1);
+                  var url = pagename + ((pagetype=="m")?"-module.html":
+                                                        "-class.html");
+                  if (dottedName.length > pagename.length)
+                      url += "#" + dottedName.substring(pagename.length+1,
+                                                        dottedName.length);
+                  return url;
+              }
+          }
+      }
diff --git a/www/python-api/frames.html b/www/python-api/frames.html
new file mode 100644 (file)
index 0000000..1be3b82
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> Python-LightMediaScanner API </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="lightmediascanner-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
diff --git a/www/python-api/help.html b/www/python-api/help.html
new file mode 100644 (file)
index 0000000..f210da8
--- /dev/null
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Help</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="help.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+
+<h1 class="epydoc"> API Documentation </h1>
+
+<p> This document contains the API (Application Programming Interface)
+documentation for Python-LightMediaScanner API.  Documentation for the Python
+objects defined by the project is divided into separate pages for each
+package, module, and class.  The API documentation also includes two
+pages containing information about the project as a whole: a trees
+page, and an index page.  </p>
+
+<h2> Object Documentation </h2>
+
+  <p>Each <strong>Package Documentation</strong> page contains: </p>
+  <ul>
+    <li> A description of the package. </li>
+    <li> A list of the modules and sub-packages contained by the
+    package.  </li>
+    <li> A summary of the classes defined by the package. </li>
+    <li> A summary of the functions defined by the package. </li>
+    <li> A summary of the variables defined by the package. </li>
+    <li> A detailed description of each function defined by the
+    package. </li>
+    <li> A detailed description of each variable defined by the
+    package. </li>
+  </ul>
+  
+  <p>Each <strong>Module Documentation</strong> page contains:</p>
+  <ul>
+    <li> A description of the module. </li>
+    <li> A summary of the classes defined by the module. </li>
+    <li> A summary of the functions defined by the module. </li>
+    <li> A summary of the variables defined by the module. </li>
+    <li> A detailed description of each function defined by the
+    module. </li>
+    <li> A detailed description of each variable defined by the
+    module. </li>
+  </ul>
+  
+  <p>Each <strong>Class Documentation</strong> page contains: </p>
+  <ul>
+    <li> A class inheritance diagram. </li>
+    <li> A list of known subclasses. </li>
+    <li> A description of the class. </li>
+    <li> A summary of the methods defined by the class. </li>
+    <li> A summary of the instance variables defined by the class. </li>
+    <li> A summary of the class (static) variables defined by the
+    class. </li> 
+    <li> A detailed description of each method defined by the
+    class. </li>
+    <li> A detailed description of each instance variable defined by the
+    class. </li> 
+    <li> A detailed description of each class (static) variable defined
+    by the class. </li> 
+  </ul>
+
+<h2> Project Documentation </h2>
+
+  <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
+  <ul>
+    <li> The <em>module hierarchy</em> lists every package and module, with
+    modules grouped into packages.  At the top level, and within each
+    package, modules and sub-packages are listed alphabetically. </li>
+    <li> The <em>class hierarchy</em> lists every class, grouped by base
+    class.  If a class has more than one base class, then it will be
+    listed under each base class.  At the top level, and under each base
+    class, classes are listed alphabetically. </li>
+  </ul>
+  
+  <p> The <strong>Index</strong> page contains indices of terms and
+  identifiers: </p>
+  <ul>
+    <li> The <em>term index</em> lists every term indexed by any object's
+    documentation.  For each term, the index provides links to each
+    place where the term is indexed. </li>
+    <li> The <em>identifier index</em> lists the (short) name of every package,
+    module, class, method, function, variable, and parameter.  For each
+    identifier, the index provides a short description, and a link to
+    its documentation. </li>
+  </ul>
+
+<h2> The Table of Contents </h2>
+
+<p> The table of contents occupies the two frames on the left side of
+the window.  The upper-left frame displays the <em>project
+contents</em>, and the lower-left frame displays the <em>module
+contents</em>: </p>
+
+<table class="help summary" border="1" cellspacing="0" cellpadding="3">
+  <tr style="height: 30%">
+    <td align="center" style="font-size: small">
+       Project<br />Contents<hr />...</td>
+    <td align="center" style="font-size: small" rowspan="2" width="70%">
+      API<br />Documentation<br />Frame<br /><br /><br />
+    </td>
+  </tr>
+  <tr>
+    <td align="center" style="font-size: small">
+      Module<br />Contents<hr />&nbsp;<br />...<br />&nbsp;
+    </td>
+  </tr>
+</table><br />
+
+<p> The <strong>project contents frame</strong> contains a list of all packages
+and modules that are defined by the project.  Clicking on an entry
+will display its contents in the module contents frame.  Clicking on a
+special entry, labeled "Everything," will display the contents of
+the entire project. </p>
+
+<p> The <strong>module contents frame</strong> contains a list of every
+submodule, class, type, exception, function, and variable defined by a
+module or package.  Clicking on an entry will display its
+documentation in the API documentation frame.  Clicking on the name of
+the module, at the top of the frame, will display the documentation
+for the module itself. </p>
+
+<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top
+navigation bar can be used to control whether the table of contents is
+displayed or not. </p>
+
+<h2> The Navigation Bar </h2>
+
+<p> A navigation bar is located at the top and bottom of every page.
+It indicates what type of page you are currently viewing, and allows
+you to go to related pages.  The following table describes the labels
+on the navigation bar.  Note that not some labels (such as
+[Parent]) are not displayed on all pages. </p>
+
+<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
+<tr class="summary">
+  <th>Label</th>
+  <th>Highlighted when...</th>
+  <th>Links to...</th>
+</tr>
+  <tr><td valign="top"><strong>[Parent]</strong></td>
+      <td valign="top"><em>(never highlighted)</em></td>
+      <td valign="top"> the parent of the current package </td></tr>
+  <tr><td valign="top"><strong>[Package]</strong></td>
+      <td valign="top">viewing a package</td>
+      <td valign="top">the package containing the current object
+      </td></tr>
+  <tr><td valign="top"><strong>[Module]</strong></td>
+      <td valign="top">viewing a module</td>
+      <td valign="top">the module containing the current object
+      </td></tr> 
+  <tr><td valign="top"><strong>[Class]</strong></td>
+      <td valign="top">viewing a class </td>
+      <td valign="top">the class containing the current object</td></tr>
+  <tr><td valign="top"><strong>[Trees]</strong></td>
+      <td valign="top">viewing the trees page</td>
+      <td valign="top"> the trees page </td></tr>
+  <tr><td valign="top"><strong>[Index]</strong></td>
+      <td valign="top">viewing the index page</td>
+      <td valign="top"> the index page </td></tr>
+  <tr><td valign="top"><strong>[Help]</strong></td>
+      <td valign="top">viewing the help page</td>
+      <td valign="top"> the help page </td></tr>
+</table>
+
+<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below
+the top navigation bar can be used to control whether documentation
+for private objects is displayed.  Private objects are usually defined
+as objects whose (short) names begin with a single underscore, but do
+not end with an underscore.  For example, "<code>_x</code>",
+"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
+are private objects; but "<code>re.sub</code>",
+"<code>__init__</code>", and "<code>type_</code>" are not.  However,
+if a module defines the "<code>__all__</code>" variable, then its
+contents are used to decide which objects are private. </p>
+
+<p> A timestamp below the bottom navigation bar indicates when each
+page was last updated. </p>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Thu Apr 23 00:00:40 2009
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/www/python-api/identifier-index.html b/www/python-api/identifier-index.html
new file mode 100644 (file)
index 0000000..a2f29ca
--- /dev/null
@@ -0,0 +1,400 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Identifier Index</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Indices&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="identifier-index.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table border="0" width="100%">
+<tr valign="bottom"><td>
+<h1 class="epydoc">Identifier Index</h1>
+</td><td>
+[
+ <a href="#A">A</a>
+  B
+ <a href="#C">C</a>
+ <a href="#D">D</a>
+  E
+  F
+ <a href="#G">G</a>
+  H
+ <a href="#I">I</a>
+  J
+  K
+ <a href="#L">L</a>
+  M
+ <a href="#N">N</a>
+  O
+ <a href="#P">P</a>
+  Q
+  R
+ <a href="#S">S</a>
+  T
+ <a href="#U">U</a>
+ <a href="#V">V</a>
+  W
+  X
+  Y
+  Z
+ <a href="#_">_</a>
+]
+</td></table>
+<table border="0" width="100%">
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="A">A</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html#authors">authors</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html">ParserInfo</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner-module.html">c_lightmediascanner</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner-module.html">lightmediascanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_del">charset_del()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#commit_interval">commit_interval</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html#categories">categories</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html">ParserInfo</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#check">check()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_add">charset_add()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#check_single_process">check_single_process()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="D">D</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#db_path">db_path</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#delete">delete()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#delete">delete()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html#description">description</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html">ParserInfo</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="G">G</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#get_commit_interval">get_commit_interval()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#get_slave_timeout">get_slave_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#is_processing">is_processing()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="L">L</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner-module.html">lightmediascanner</a></td>
+<td width="33%" class="link-index"><a href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_ERROR_COMM">LMS_PROGRESS_STATUS_ERROR_COMM</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner-module.html">lightmediascanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_PROCESSED">LMS_PROGRESS_STATUS_PROCESSED</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner-module.html">lightmediascanner</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner-module.html">lightmediascanner.c_lightmediascanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_ERROR_PARSE">LMS_PROGRESS_STATUS_ERROR_PARSE</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner-module.html">lightmediascanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_SKIPPED">LMS_PROGRESS_STATUS_SKIPPED</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner-module.html">lightmediascanner</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_DELETED">LMS_PROGRESS_STATUS_DELETED</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner-module.html">lightmediascanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_KILLED">LMS_PROGRESS_STATUS_KILLED</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner-module.html">lightmediascanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_UP_TO_DATE">LMS_PROGRESS_STATUS_UP_TO_DATE</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner-module.html">lightmediascanner</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="N">N</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#name">name</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html#name">name</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html">ParserInfo</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="P">P</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner-module.html">lightmediascanner.c_lightmediascanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner-module.html#parser_info_find">parser_info_find()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner-module.html">lightmediascanner.c_lightmediascanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner-module.html#parsers_list_by_category">parsers_list_by_category()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner-module.html">lightmediascanner.c_lightmediascanner</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_add">parser_add()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html">ParserInfo</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner-module.html">lightmediascanner.c_lightmediascanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html#path">path</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html">ParserInfo</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_del">parser_del()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parsers">parsers</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#process">process()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_find_and_add">parser_find_and_add()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parsers_clear">parsers_clear()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#process_single_process">process_single_process()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner-module.html#parser_info">parser_info()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner-module.html">lightmediascanner.c_lightmediascanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner-module.html#parsers_list">parsers_list()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner-module.html">lightmediascanner.c_lightmediascanner</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="S">S</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#scanner">scanner</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_progress_callback">set_progress_callback()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#slave_timeout">slave_timeout</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_commit_interval">set_commit_interval()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_slave_timeout">set_slave_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#stop_processing">stop_processing()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="U">U</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html#uri">uri</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html">ParserInfo</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="V">V</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html#version">version</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html">ParserInfo</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="_">_</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner-module.html#__bootstrap__">__bootstrap__()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner-module.html">lightmediascanner.c_lightmediascanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__new__">__new__()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html#__new__">__new__()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html">ParserInfo</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner-module.html">lightmediascanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html">ParserInfo</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner-module.html">lightmediascanner.c_lightmediascanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html">ParserInfo</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__new__">__new__()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+</table>
+<br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Indices&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Thu Apr 23 00:00:40 2009
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/www/python-api/index.html b/www/python-api/index.html
new file mode 100644 (file)
index 0000000..1be3b82
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> Python-LightMediaScanner API </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="lightmediascanner-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
diff --git a/www/python-api/lightmediascanner-module.html b/www/python-api/lightmediascanner-module.html
new file mode 100644 (file)
index 0000000..e02ce10
--- /dev/null
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>lightmediascanner</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Package&nbsp;lightmediascanner
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="lightmediascanner-module.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PACKAGE DESCRIPTION ==================== -->
+<h1 class="epydoc">Package lightmediascanner</h1><p class="nomargin-top"><span class="codelink"><a href="lightmediascanner-pysrc.html">source&nbsp;code</a></span></p>
+<!-- ==================== SUBMODULES ==================== -->
+<a name="section-Submodules"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Submodules</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Submodules"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr><td class="summary">
+  <ul class="nomargin">
+    <li> <strong class="uidlink"><a href="lightmediascanner.c_lightmediascanner-module.html">lightmediascanner.c_lightmediascanner</a></strong>    </li>
+  </ul></td></tr>
+</table>
+
+<br />
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="LMS_PROGRESS_STATUS_UP_TO_DATE"></a><span class="summary-name">LMS_PROGRESS_STATUS_UP_TO_DATE</span> = <code title="0">0</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="LMS_PROGRESS_STATUS_PROCESSED"></a><span class="summary-name">LMS_PROGRESS_STATUS_PROCESSED</span> = <code title="1">1</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="LMS_PROGRESS_STATUS_DELETED"></a><span class="summary-name">LMS_PROGRESS_STATUS_DELETED</span> = <code title="2">2</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="LMS_PROGRESS_STATUS_KILLED"></a><span class="summary-name">LMS_PROGRESS_STATUS_KILLED</span> = <code title="3">3</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="LMS_PROGRESS_STATUS_ERROR_PARSE"></a><span class="summary-name">LMS_PROGRESS_STATUS_ERROR_PARSE</span> = <code title="4">4</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="LMS_PROGRESS_STATUS_ERROR_COMM"></a><span class="summary-name">LMS_PROGRESS_STATUS_ERROR_COMM</span> = <code title="5">5</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="LMS_PROGRESS_STATUS_SKIPPED"></a><span class="summary-name">LMS_PROGRESS_STATUS_SKIPPED</span> = <code title="6">6</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'lightmediascanner'"><code class="variable-quote">'</code><code class="variable-string">lightmediascanner</code><code class="variable-quote">'</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Thu Apr 23 00:00:40 2009
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/www/python-api/lightmediascanner-pysrc.html b/www/python-api/lightmediascanner-pysrc.html
new file mode 100644 (file)
index 0000000..82e1cc5
--- /dev/null
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>lightmediascanner</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Package&nbsp;lightmediascanner
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="lightmediascanner-pysrc.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="lightmediascanner-module.html">Package lightmediascanner</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment"># Copyright (C) 2007 by INdT</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"># This program is free software; you can redistribute it and/or</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"># modify it under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"># as published by the Free Software Foundation; either version 2</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"># of the License, or (at your option) any later version.</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"># This program is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-comment"># but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-comment"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-comment"># GNU General Public License for more details.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line"><tt class="py-comment"># along with this program; if not, write to the Free Software</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line"><tt class="py-comment"># Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"><tt class="py-comment"># @author Gustavo Sverzut Barbieri &lt;gustavo.barbieri@openbossa.org&gt;</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line"> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Module lightmediascanner.c_lightmediascanner=lightmediascanner.c_lightmediascanner-module.html"><a title="lightmediascanner.c_lightmediascanner" class="py-name" href="#" onclick="return doclink('link-0', 'c_lightmediascanner', 'link-0');">c_lightmediascanner</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Class lightmediascanner.c_lightmediascanner.LightMediaScanner=lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><a title="lightmediascanner.c_lightmediascanner.LightMediaScanner" class="py-name" href="#" onclick="return doclink('link-1', 'LightMediaScanner', 'link-1');">LightMediaScanner</a></tt><tt class="py-op">,</tt> \ </tt>
+<a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line">     <tt id="link-2" class="py-name" targets="Function lightmediascanner.c_lightmediascanner.parser_info()=lightmediascanner.c_lightmediascanner-module.html#parser_info"><a title="lightmediascanner.c_lightmediascanner.parser_info" class="py-name" href="#" onclick="return doclink('link-2', 'parser_info', 'link-2');">parser_info</a></tt><tt class="py-op">,</tt> <tt id="link-3" class="py-name" targets="Function lightmediascanner.c_lightmediascanner.parser_info_find()=lightmediascanner.c_lightmediascanner-module.html#parser_info_find"><a title="lightmediascanner.c_lightmediascanner.parser_info_find" class="py-name" href="#" onclick="return doclink('link-3', 'parser_info_find', 'link-3');">parser_info_find</a></tt><tt class="py-op">,</tt> \ </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line">     <tt id="link-4" class="py-name" targets="Function lightmediascanner.c_lightmediascanner.parsers_list()=lightmediascanner.c_lightmediascanner-module.html#parsers_list"><a title="lightmediascanner.c_lightmediascanner.parsers_list" class="py-name" href="#" onclick="return doclink('link-4', 'parsers_list', 'link-4');">parsers_list</a></tt><tt class="py-op">,</tt> <tt id="link-5" class="py-name" targets="Function lightmediascanner.c_lightmediascanner.parsers_list_by_category()=lightmediascanner.c_lightmediascanner-module.html#parsers_list_by_category"><a title="lightmediascanner.c_lightmediascanner.parsers_list_by_category" class="py-name" href="#" onclick="return doclink('link-5', 'parsers_list_by_category', 'link-5');">parsers_list_by_category</a></tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line"> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable lightmediascanner.LMS_PROGRESS_STATUS_UP_TO_DATE=lightmediascanner-module.html#LMS_PROGRESS_STATUS_UP_TO_DATE"><a title="lightmediascanner.LMS_PROGRESS_STATUS_UP_TO_DATE" class="py-name" href="#" onclick="return doclink('link-6', 'LMS_PROGRESS_STATUS_UP_TO_DATE', 'link-6');">LMS_PROGRESS_STATUS_UP_TO_DATE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line"><tt id="link-7" class="py-name" targets="Variable lightmediascanner.LMS_PROGRESS_STATUS_PROCESSED=lightmediascanner-module.html#LMS_PROGRESS_STATUS_PROCESSED"><a title="lightmediascanner.LMS_PROGRESS_STATUS_PROCESSED" class="py-name" href="#" onclick="return doclink('link-7', 'LMS_PROGRESS_STATUS_PROCESSED', 'link-7');">LMS_PROGRESS_STATUS_PROCESSED</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable lightmediascanner.LMS_PROGRESS_STATUS_DELETED=lightmediascanner-module.html#LMS_PROGRESS_STATUS_DELETED"><a title="lightmediascanner.LMS_PROGRESS_STATUS_DELETED" class="py-name" href="#" onclick="return doclink('link-8', 'LMS_PROGRESS_STATUS_DELETED', 'link-8');">LMS_PROGRESS_STATUS_DELETED</a></tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable lightmediascanner.LMS_PROGRESS_STATUS_KILLED=lightmediascanner-module.html#LMS_PROGRESS_STATUS_KILLED"><a title="lightmediascanner.LMS_PROGRESS_STATUS_KILLED" class="py-name" href="#" onclick="return doclink('link-9', 'LMS_PROGRESS_STATUS_KILLED', 'link-9');">LMS_PROGRESS_STATUS_KILLED</a></tt> <tt class="py-op">=</tt> <tt class="py-number">3</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable lightmediascanner.LMS_PROGRESS_STATUS_ERROR_PARSE=lightmediascanner-module.html#LMS_PROGRESS_STATUS_ERROR_PARSE"><a title="lightmediascanner.LMS_PROGRESS_STATUS_ERROR_PARSE" class="py-name" href="#" onclick="return doclink('link-10', 'LMS_PROGRESS_STATUS_ERROR_PARSE', 'link-10');">LMS_PROGRESS_STATUS_ERROR_PARSE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">4</tt> </tt>
+<a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable lightmediascanner.LMS_PROGRESS_STATUS_ERROR_COMM=lightmediascanner-module.html#LMS_PROGRESS_STATUS_ERROR_COMM"><a title="lightmediascanner.LMS_PROGRESS_STATUS_ERROR_COMM" class="py-name" href="#" onclick="return doclink('link-11', 'LMS_PROGRESS_STATUS_ERROR_COMM', 'link-11');">LMS_PROGRESS_STATUS_ERROR_COMM</a></tt> <tt class="py-op">=</tt> <tt class="py-number">5</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt>  <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable lightmediascanner.LMS_PROGRESS_STATUS_SKIPPED=lightmediascanner-module.html#LMS_PROGRESS_STATUS_SKIPPED"><a title="lightmediascanner.LMS_PROGRESS_STATUS_SKIPPED" class="py-name" href="#" onclick="return doclink('link-12', 'LMS_PROGRESS_STATUS_SKIPPED', 'link-12');">LMS_PROGRESS_STATUS_SKIPPED</a></tt> <tt class="py-op">=</tt> <tt class="py-number">6</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Thu Apr 23 00:00:40 2009
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/www/python-api/lightmediascanner.c_lightmediascanner-module.html b/www/python-api/lightmediascanner.c_lightmediascanner-module.html
new file mode 100644 (file)
index 0000000..5ed1723
--- /dev/null
@@ -0,0 +1,360 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>lightmediascanner.c_lightmediascanner</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="lightmediascanner-module.html">Package&nbsp;lightmediascanner</a> ::
+        Module&nbsp;c_lightmediascanner
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="lightmediascanner.c_lightmediascanner-module.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module c_lightmediascanner</h1><p class="nomargin-top"><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html">source&nbsp;code</a></span></p>
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html" class="summary-name">LightMediaScanner</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="lightmediascanner.c_lightmediascanner.Parser-class.html" class="summary-name">Parser</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html" class="summary-name">ParserInfo</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__bootstrap__"></a><span class="summary-sig-name">__bootstrap__</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#__bootstrap__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner-module.html#parser_info" class="summary-sig-name">parser_info</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      Retrieve information of parser given its path.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#parser_info">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner-module.html#parser_info_find" class="summary-sig-name">parser_info_find</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      Retrieve information of parser given its name.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#parser_info_find">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner-module.html#parsers_list" class="summary-sig-name">parsers_list</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      Returns a list of paths to known parsers in this system.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#parsers_list">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="parsers_list_by_category"></a><span class="summary-sig-name">parsers_list_by_category</span>(<span class="summary-sig-arg">...</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#parsers_list_by_category">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="None">None</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="parser_info"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parser_info</span>(<span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#parser_info">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Retrieve information of parser given its path.</p>
+  <dl class="fields">
+    <dt>Returns:</dt>
+        <dd>None if failed or ParserInfo otherwise.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="parser_info_find"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parser_info_find</span>(<span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#parser_info_find">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Retrieve information of parser given its name.</p>
+  <dl class="fields">
+    <dt>Returns:</dt>
+        <dd>None if failed or ParserInfo otherwise.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="parsers_list"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">parsers_list</span>(<span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#parsers_list">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Returns a list of paths to known parsers in this system.</p>
+  <p>@return list of str @see parser_info()</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Thu Apr 23 00:00:40 2009
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/www/python-api/lightmediascanner.c_lightmediascanner-pysrc.html b/www/python-api/lightmediascanner.c_lightmediascanner-pysrc.html
new file mode 100644 (file)
index 0000000..3fcadc4
--- /dev/null
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>lightmediascanner.c_lightmediascanner</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="lightmediascanner-module.html">Package&nbsp;lightmediascanner</a> ::
+        Module&nbsp;c_lightmediascanner
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="lightmediascanner.c_lightmediascanner-pysrc.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="lightmediascanner.c_lightmediascanner-module.html">Module lightmediascanner.c_lightmediascanner</a></h1>
+<pre class="py-src">
+<a name="__bootstrap__"></a><div id="__bootstrap__-def"><a name="L1"></a><tt class="py-lineno">1</tt> <a class="py-toggle" href="#" id="__bootstrap__-toggle" onclick="return toggle('__bootstrap__');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lightmediascanner.c_lightmediascanner-module.html#__bootstrap__">__bootstrap__</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="__bootstrap__-collapsed" style="display:none;" pad="+" indent="++++"></div><div id="__bootstrap__-expanded"><a name="L2"></a><tt class="py-lineno">2</tt>  <tt class="py-line">   <tt class="py-keyword">global</tt> <tt id="link-0" class="py-name" targets="Function lightmediascanner.c_lightmediascanner.__bootstrap__()=lightmediascanner.c_lightmediascanner-module.html#__bootstrap__"><a title="lightmediascanner.c_lightmediascanner.__bootstrap__" class="py-name" href="#" onclick="return doclink('link-0', '__bootstrap__', 'link-0');">__bootstrap__</a></tt><tt class="py-op">,</tt> <tt class="py-name">__loader__</tt><tt class="py-op">,</tt> <tt class="py-name">__file__</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">3</tt>  <tt class="py-line">   <tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">pkg_resources</tt><tt class="py-op">,</tt> <tt class="py-name">imp</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">4</tt>  <tt class="py-line">   <tt class="py-name">__file__</tt> <tt class="py-op">=</tt> <tt class="py-name">pkg_resources</tt><tt class="py-op">.</tt><tt class="py-name">resource_filename</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt><tt class="py-string">'c_lightmediascanner.so'</tt><tt class="py-op">)</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">5</tt>  <tt class="py-line">   <tt class="py-name">__loader__</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">;</tt> <tt class="py-keyword">del</tt> <tt id="link-1" class="py-name"><a title="lightmediascanner.c_lightmediascanner.__bootstrap__" class="py-name" href="#" onclick="return doclink('link-1', '__bootstrap__', 'link-0');">__bootstrap__</a></tt><tt class="py-op">,</tt> <tt class="py-name">__loader__</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">6</tt>  <tt class="py-line">   <tt class="py-name">imp</tt><tt class="py-op">.</tt><tt class="py-name">load_dynamic</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt><tt class="py-name">__file__</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L7"></a><tt class="py-lineno">7</tt>  <tt class="py-line"><tt id="link-2" class="py-name"><a title="lightmediascanner.c_lightmediascanner.__bootstrap__" class="py-name" href="#" onclick="return doclink('link-2', '__bootstrap__', 'link-0');">__bootstrap__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">8</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Thu Apr 23 00:00:40 2009
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/www/python-api/lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html b/www/python-api/lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html
new file mode 100644 (file)
index 0000000..c10e12f
--- /dev/null
@@ -0,0 +1,891 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>lightmediascanner.c_lightmediascanner.LightMediaScanner</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="lightmediascanner-module.html">Package&nbsp;lightmediascanner</a> ::
+        <a href="lightmediascanner.c_lightmediascanner-module.html">Module&nbsp;c_lightmediascanner</a> ::
+        Class&nbsp;LightMediaScanner
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class LightMediaScanner</h1><p class="nomargin-top"><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner">source&nbsp;code</a></span></p>
+<pre class="base-tree">
+object --+
+         |
+        <strong class="uidshort">LightMediaScanner</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.__init__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">a new object with type S, a subtype of T</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>,
+        <span class="summary-sig-arg">S</span>,
+        <span class="summary-sig-arg">...</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.__new__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      repr(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.__repr__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.__str__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_add" class="summary-sig-name">charset_add</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      Add charset to list of supported input charsets/encoding.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.charset_add">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="charset_del"></a><span class="summary-sig-name">charset_del</span>(<span class="summary-sig-arg">...</span>)</span><br />
+      Del charset from list of supported input charsets/encoding.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.charset_del">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#check" class="summary-sig-name">check</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      Check (and update) files under directory.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.check">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#check_single_process" class="summary-sig-name">check_single_process</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      Check (and update) files under directory *without fork()-ing into 
+      child process*.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.check_single_process">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="delete"></a><span class="summary-sig-name">delete</span>(<span class="summary-sig-arg">...</span>)</span><br />
+      Delete all parsers and force wrapped object deletion</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.delete">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">int</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_commit_interval"></a><span class="summary-sig-name">get_commit_interval</span>(<span class="summary-sig-arg">...</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.get_commit_interval">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">int</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_slave_timeout"></a><span class="summary-sig-name">get_slave_timeout</span>(<span class="summary-sig-arg">...</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.get_slave_timeout">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">bool</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_processing"></a><span class="summary-sig-name">is_processing</span>(<span class="summary-sig-arg">...</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.is_processing">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html" 
+      class="link">Parser</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="parser_add"></a><span class="summary-sig-name">parser_add</span>(<span class="summary-sig-arg">...</span>)</span><br />
+      Add a new plugin/parser based on it's whole path to shared object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.parser_add">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="parser_del"></a><span class="summary-sig-name">parser_del</span>(<span class="summary-sig-arg">...</span>)</span><br />
+      Delete a plugin/parser.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.parser_del">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html" 
+      class="link">Parser</a></span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="parser_find_and_add"></a><span class="summary-sig-name">parser_find_and_add</span>(<span class="summary-sig-arg">...</span>)</span><br />
+      Add a new plugin/parser based on it's name.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.parser_find_and_add">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="parsers_clear"></a><span class="summary-sig-name">parsers_clear</span>(<span class="summary-sig-arg">...</span>)</span><br />
+      Delete all plugins/parsers</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.parsers_clear">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#process" class="summary-sig-name">process</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      Process directory recursively.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.process">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#process_single_process" class="summary-sig-name">process_single_process</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      Process directory recursively *without fork()-ing into child 
+      process*.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.process_single_process">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_commit_interval" class="summary-sig-name">set_commit_interval</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      Set the number of transactions between commits.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.set_commit_interval">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_progress_callback" class="summary-sig-name">set_progress_callback</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      Set new progress callback.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.set_progress_callback">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_slave_timeout" class="summary-sig-name">set_slave_timeout</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      Set maximum time a parser may use.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.set_slave_timeout">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="stop_processing"></a><span class="summary-sig-name">stop_processing</span>(<span class="summary-sig-arg">...</span>)</span><br />
+      Stop process/check</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.stop_processing">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__format__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__setattr__</code>,
+      <code>__sizeof__</code>,
+      <code>__subclasshook__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="commit_interval"></a><span class="summary-name">commit_interval</span>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="db_path"></a><span class="summary-name">db_path</span>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="parsers"></a><span class="summary-name">parsers</span>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="slave_timeout"></a><span class="summary-name">slave_timeout</span>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">...</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.__init__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>x.__init__(...) initializes x; see x.__class__.__doc__ for 
+  signature</p>
+  <dl class="fields">
+    <dt>Overrides:
+        object.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__new__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>,
+        <span class="sig-arg">S</span>,
+        <span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.__new__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Returns: a new object with type S, a subtype of T</dt>
+    <dt>Overrides:
+        object.__new__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__repr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">...</span>)</span>
+    <br /><em class="fname">(Representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.__repr__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>repr(x)</p>
+  <dl class="fields">
+    <dt>Overrides:
+        object.__repr__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">...</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.__str__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>str(x)</p>
+  <dl class="fields">
+    <dt>Overrides:
+        object.__str__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="charset_add"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">charset_add</span>(<span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.charset_add">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Add charset to list of supported input charsets/encoding.</p>
+  <p>If some string in analysed/parsed files are not UTF-8, then it will 
+  try agains a list of charsets registered with this function.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="check"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">check</span>(<span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.check">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Check (and update) files under directory.</p>
+  <p>This operates on all files in all sub directories of top_path using 
+  the added parsers. If files are up to date, nothing is done, otherwise 
+  they can be marked as deleted or updated if they still exists, but with 
+  different size or modification time.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="check_single_process"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">check_single_process</span>(<span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.check_single_process">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Check (and update) files under directory *without fork()-ing into 
+  child process*.</p>
+  <p>This operates on all files in all sub directories of top_path using 
+  the added parsers. If files are up to date, nothing is done, otherwise 
+  they can be marked as deleted or updated if they still exists, but with 
+  different size or modification time.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="process"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">process</span>(<span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.process">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Process directory recursively.</p>
+  <p>This operates on all files in all sub directories of top_path using 
+  the added parsers.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="process_single_process"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">process_single_process</span>(<span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.process_single_process">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Process directory recursively *without fork()-ing into child 
+  process*.</p>
+  <p>This operates on all files in all sub directories of top_path using 
+  the added parsers.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="set_commit_interval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_commit_interval</span>(<span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.set_commit_interval">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Set the number of transactions between commits.</p>
+  <p>Sets how many transactions/files to handle in one commit, the more the
+  faster, but if one parser takes too long and it's killed due 
+  slave_timeout being exceeded, then at most this number of transactions 
+  will be lost.</p>
+  <p>Note that transaction here is not a single SQL statement, but it is 
+  considered to be the processing of a file, which can be more than just 
+  one.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="set_progress_callback"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_progress_callback</span>(<span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.set_progress_callback">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Set new progress callback.
+
+If you want to unset a callback, just use None.
+
+Function signature is:
+
+    C{function(lms, path, status, *args, **kargs)}
+
+with status being one of LMS_PROGRESS_STATUS_*.
+
+@parm: B{cb} a callable object or None to unset previously set callback.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="set_slave_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_slave_timeout</span>(<span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.set_slave_timeout">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Set maximum time a parser may use.</p>
+  <p>This will be the timeout before killing the slave process running some
+  parser. If this happens, another slave process will be started to 
+  continue from next file.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Thu Apr 23 00:00:40 2009
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/www/python-api/lightmediascanner.c_lightmediascanner.Parser-class.html b/www/python-api/lightmediascanner.c_lightmediascanner.Parser-class.html
new file mode 100644 (file)
index 0000000..e380cfb
--- /dev/null
@@ -0,0 +1,396 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>lightmediascanner.c_lightmediascanner.Parser</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="lightmediascanner-module.html">Package&nbsp;lightmediascanner</a> ::
+        <a href="lightmediascanner.c_lightmediascanner-module.html">Module&nbsp;c_lightmediascanner</a> ::
+        Class&nbsp;Parser
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="lightmediascanner.c_lightmediascanner.Parser-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Parser</h1><p class="nomargin-top"><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser">source&nbsp;code</a></span></p>
+<pre class="base-tree">
+object --+
+         |
+        <strong class="uidshort">Parser</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.__init__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">a new object with type S, a subtype of T</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>,
+        <span class="summary-sig-arg">S</span>,
+        <span class="summary-sig-arg">...</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.__new__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      repr(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.__repr__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.__str__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="delete"></a><span class="summary-sig-name">delete</span>(<span class="summary-sig-arg">...</span>)</span><br />
+      Same as LightMediaScanner.parser_del(self).</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.delete">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__format__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__setattr__</code>,
+      <code>__sizeof__</code>,
+      <code>__subclasshook__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="name"></a><span class="summary-name">name</span>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="scanner"></a><span class="summary-name">scanner</span>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">...</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.__init__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>x.__init__(...) initializes x; see x.__class__.__doc__ for 
+  signature</p>
+  <dl class="fields">
+    <dt>Overrides:
+        object.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__new__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>,
+        <span class="sig-arg">S</span>,
+        <span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.__new__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Returns: a new object with type S, a subtype of T</dt>
+    <dt>Overrides:
+        object.__new__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__repr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">...</span>)</span>
+    <br /><em class="fname">(Representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.__repr__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>repr(x)</p>
+  <dl class="fields">
+    <dt>Overrides:
+        object.__repr__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">...</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.__str__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>str(x)</p>
+  <dl class="fields">
+    <dt>Overrides:
+        object.__str__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Thu Apr 23 00:00:40 2009
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/www/python-api/lightmediascanner.c_lightmediascanner.ParserInfo-class.html b/www/python-api/lightmediascanner.c_lightmediascanner.ParserInfo-class.html
new file mode 100644 (file)
index 0000000..6b6deb1
--- /dev/null
@@ -0,0 +1,374 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>lightmediascanner.c_lightmediascanner.ParserInfo</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="lightmediascanner-module.html">Package&nbsp;lightmediascanner</a> ::
+        <a href="lightmediascanner.c_lightmediascanner-module.html">Module&nbsp;c_lightmediascanner</a> ::
+        Class&nbsp;ParserInfo
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ParserInfo</h1><p class="nomargin-top"><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#ParserInfo">source&nbsp;code</a></span></p>
+<pre class="base-tree">
+object --+
+         |
+        <strong class="uidshort">ParserInfo</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#ParserInfo.__init__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">a new object with type S, a subtype of T</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>,
+        <span class="summary-sig-arg">S</span>,
+        <span class="summary-sig-arg">...</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#ParserInfo.__new__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#ParserInfo.__str__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__format__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__sizeof__</code>,
+      <code>__subclasshook__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="authors"></a><span class="summary-name">authors</span>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="categories"></a><span class="summary-name">categories</span>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="description"></a><span class="summary-name">description</span>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="name"></a><span class="summary-name">name</span>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="path"></a><span class="summary-name">path</span>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="uri"></a><span class="summary-name">uri</span>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="version"></a><span class="summary-name">version</span>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">...</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#ParserInfo.__init__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>x.__init__(...) initializes x; see x.__class__.__doc__ for 
+  signature</p>
+  <dl class="fields">
+    <dt>Overrides:
+        object.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__new__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>,
+        <span class="sig-arg">S</span>,
+        <span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#ParserInfo.__new__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  
+  <dl class="fields">
+    <dt>Returns: a new object with type S, a subtype of T</dt>
+    <dt>Overrides:
+        object.__new__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">...</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#ParserInfo.__str__">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>str(x)</p>
+  <dl class="fields">
+    <dt>Overrides:
+        object.__str__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Thu Apr 23 00:00:40 2009
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/www/python-api/module-tree.html b/www/python-api/module-tree.html
new file mode 100644 (file)
index 0000000..5fed987
--- /dev/null
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Module Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="module-tree.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Module Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink"><a href="lightmediascanner-module.html">lightmediascanner</a></strong>
+    <ul>
+    <li> <strong class="uidlink"><a href="lightmediascanner.c_lightmediascanner-module.html">lightmediascanner.c_lightmediascanner</a></strong>    </li>
+    </ul>
+    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="lightmediascanner-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            >Python-LightMediaScanner API</th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Thu Apr 23 00:00:40 2009
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/www/python-api/redirect.html b/www/python-api/redirect.html
new file mode 100644 (file)
index 0000000..a720eec
--- /dev/null
@@ -0,0 +1,38 @@
+<html><head><title>Epydoc Redirect Page</title>
+<meta http-equiv="cache-control" content="no-cache" />
+<meta http-equiv="expires" content="0" />
+<meta http-equiv="pragma" content="no-cache" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+<!--
+var pages = ["lightmediascanner.c_lightmediascanner.LightMediaScanner-c", "lightmediascanner.c_lightmediascanner.ParserInfo-c", "lightmediascanner.c_lightmediascanner.Parser-c", "lightmediascanner.c_lightmediascanner-m", "lightmediascanner-m"];
+var dottedName = get_anchor();
+if (dottedName) {
+    var target = redirect_url(dottedName);
+    if (target) window.location.replace(target);
+}
+// -->
+</script>
+
+<h3>Epydoc Auto-redirect page</h3>
+
+<p>When javascript is enabled, this page will redirect URLs of
+the form <tt>redirect.html#<i>dotted.name</i></tt> to the
+documentation for the object with the given fully-qualified
+dotted name.</p>
+<p><a id="message"> &nbsp; </a></p>
+
+<script type="text/javascript">
+<!--
+if (dottedName) {
+    var msg = document.getElementById("message");
+    msg.innerHTML = "No documentation found for <tt>"+
+                    dottedName+"</tt>";
+}
+// -->
+</script>
+
+</body>
+</html>
diff --git a/www/python-api/toc-everything.html b/www/python-api/toc-everything.html
new file mode 100644 (file)
index 0000000..5a6506f
--- /dev/null
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Everything</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Everything</h1>
+<hr />
+  <h2 class="toc">All Classes</h2>
+    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"
+     >lightmediascanner.c_lightmediascanner.LightMediaScanner</a><br />    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner.Parser-class.html"
+     >lightmediascanner.c_lightmediascanner.Parser</a><br />    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html"
+     >lightmediascanner.c_lightmediascanner.ParserInfo</a><br />  <h2 class="toc">All Functions</h2>
+    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner-module.html#__bootstrap__"
+     >lightmediascanner.c_lightmediascanner.__bootstrap__</a><br />    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner-module.html#parser_info"
+     >lightmediascanner.c_lightmediascanner.parser_info</a><br />    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner-module.html#parser_info_find"
+     >lightmediascanner.c_lightmediascanner.parser_info_find</a><br />    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner-module.html#parsers_list"
+     >lightmediascanner.c_lightmediascanner.parsers_list</a><br />    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner-module.html#parsers_list_by_category"
+     >lightmediascanner.c_lightmediascanner.parsers_list_by_category</a><br />  <h2 class="toc">All Variables</h2>
+    <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_DELETED"
+     >lightmediascanner.LMS_PROGRESS_STATUS_DELETED</a><br />    <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_ERROR_COMM"
+     >lightmediascanner.LMS_PROGRESS_STATUS_ERROR_COMM</a><br />    <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_ERROR_PARSE"
+     >lightmediascanner.LMS_PROGRESS_STATUS_ERROR_PARSE</a><br />    <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_KILLED"
+     >lightmediascanner.LMS_PROGRESS_STATUS_KILLED</a><br />    <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_PROCESSED"
+     >lightmediascanner.LMS_PROGRESS_STATUS_PROCESSED</a><br />    <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_SKIPPED"
+     >lightmediascanner.LMS_PROGRESS_STATUS_SKIPPED</a><br />    <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_UP_TO_DATE"
+     >lightmediascanner.LMS_PROGRESS_STATUS_UP_TO_DATE</a><br />    <a target="mainFrame" href="lightmediascanner-module.html#__package__"
+     >lightmediascanner.__package__</a><br />    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner-module.html#__package__"
+     >lightmediascanner.c_lightmediascanner.__package__</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/www/python-api/toc-lightmediascanner-module.html b/www/python-api/toc-lightmediascanner-module.html
new file mode 100644 (file)
index 0000000..38ff5d1
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>lightmediascanner</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module lightmediascanner</h1>
+<hr />
+  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_DELETED"
+     >LMS_PROGRESS_STATUS_DELETED</a><br />    <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_ERROR_COMM"
+     >LMS_PROGRESS_STATUS_ERROR_COMM</a><br />    <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_ERROR_PARSE"
+     >LMS_PROGRESS_STATUS_ERROR_PARSE</a><br />    <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_KILLED"
+     >LMS_PROGRESS_STATUS_KILLED</a><br />    <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_PROCESSED"
+     >LMS_PROGRESS_STATUS_PROCESSED</a><br />    <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_SKIPPED"
+     >LMS_PROGRESS_STATUS_SKIPPED</a><br />    <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_UP_TO_DATE"
+     >LMS_PROGRESS_STATUS_UP_TO_DATE</a><br />    <a target="mainFrame" href="lightmediascanner-module.html#__package__"
+     >__package__</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/www/python-api/toc-lightmediascanner.c_lightmediascanner-module.html b/www/python-api/toc-lightmediascanner.c_lightmediascanner-module.html
new file mode 100644 (file)
index 0000000..81643db
--- /dev/null
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>c_lightmediascanner</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module c_lightmediascanner</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"
+     >LightMediaScanner</a><br />    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner.Parser-class.html"
+     >Parser</a><br />    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner.ParserInfo-class.html"
+     >ParserInfo</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner-module.html#__bootstrap__"
+     >__bootstrap__</a><br />    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner-module.html#parser_info"
+     >parser_info</a><br />    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner-module.html#parser_info_find"
+     >parser_info_find</a><br />    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner-module.html#parsers_list"
+     >parsers_list</a><br />    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner-module.html#parsers_list_by_category"
+     >parsers_list_by_category</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="lightmediascanner.c_lightmediascanner-module.html#__package__"
+     >__package__</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/www/python-api/toc.html b/www/python-api/toc.html
new file mode 100644 (file)
index 0000000..aaa1a1e
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Table of Contents</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Table&nbsp;of&nbsp;Contents</h1>
+<hr />
+  <a target="moduleFrame" href="toc-everything.html">Everything</a>
+  <br />
+  <h2 class="toc">Modules</h2>
+    <a target="moduleFrame" href="toc-lightmediascanner-module.html"
+     onclick="setFrame('toc-lightmediascanner-module.html','lightmediascanner-module.html');"     >lightmediascanner</a><br />    <a target="moduleFrame" href="toc-lightmediascanner.c_lightmediascanner-module.html"
+     onclick="setFrame('toc-lightmediascanner.c_lightmediascanner-module.html','lightmediascanner.c_lightmediascanner-module.html');"     >lightmediascanner.c_lightmediascanner</a><br /><hr />
+  <span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>