From 46a0810b41c7d9017bcaf366f3d0b58c726b0133 Mon Sep 17 00:00:00 2001 From: barbieri Date: Thu, 13 Dec 2007 05:09:31 +0000 Subject: [PATCH] Add C-docs to webpage --- www/api/annotated.html | 44 + www/api/classes.html | 40 + www/api/doxygen.css | 358 +++++ www/api/doxygen.png | Bin 0 -> 1281 bytes www/api/files.html | 45 + www/api/functions.html | 211 +++ www/api/functions_vars.html | 211 +++ www/api/globals.html | 78 ++ www/api/globals_0x61.html | 64 + www/api/globals_0x63.html | 99 ++ www/api/globals_0x64.html | 223 +++ www/api/globals_0x66.html | 65 + www/api/globals_0x67.html | 89 ++ www/api/globals_0x69.html | 62 + www/api/globals_0x6c.html | 63 + www/api/globals_0x6e.html | 62 + www/api/globals_0x70.html | 105 ++ www/api/globals_0x72.html | 62 + www/api/globals_0x73.html | 72 + www/api/globals_0x74.html | 61 + www/api/globals_0x77.html | 62 + www/api/globals_defs.html | 121 ++ www/api/globals_func.html | 329 +++++ www/api/globals_type.html | 65 + www/api/globals_vars.html | 41 + www/api/graph_legend.dot | 23 + www/api/graph_legend.html | 82 ++ www/api/graph_legend.png | Bin 0 -> 2961 bytes www/api/group__LMS__API.html | 563 ++++++++ ...PI_g0b427b8b60957e29a0e504c10c5356b0_cgraph.map | 1 + ...PI_g0b427b8b60957e29a0e504c10c5356b0_cgraph.md5 | 1 + ...PI_g0b427b8b60957e29a0e504c10c5356b0_cgraph.png | Bin 0 -> 504 bytes ...PI_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.map | 1 + ...PI_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.md5 | 1 + ...PI_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.png | Bin 0 -> 491 bytes ...PI_g4fd56e209d415b27466274726cc7d59f_cgraph.map | 1 + ...PI_g4fd56e209d415b27466274726cc7d59f_cgraph.md5 | 1 + ...PI_g4fd56e209d415b27466274726cc7d59f_cgraph.png | Bin 0 -> 490 bytes ...PI_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.map | 1 + ...PI_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.md5 | 1 + ...PI_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.png | Bin 0 -> 514 bytes ...PI_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.map | 2 + ...PI_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.md5 | 1 + ...PI_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.png | Bin 0 -> 740 bytes ...PI_gf15f3b0f7de2113155a360df989b7687_cgraph.map | 1 + ...PI_gf15f3b0f7de2113155a360df989b7687_cgraph.md5 | 1 + ...PI_gf15f3b0f7de2113155a360df989b7687_cgraph.png | Bin 0 -> 462 bytes www/api/group__LMS__CHARSET.html | 245 ++++ www/api/group__LMS__DB.html | 727 ++++++++++ ...DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.map | 5 + ...DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.md5 | 1 + ...DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.png | Bin 0 -> 1549 bytes ...DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.map | 2 + ...DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.md5 | 1 + ...DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.png | Bin 0 -> 738 bytes ...DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.map | 5 + ...DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.md5 | 1 + ...DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.png | Bin 0 -> 1714 bytes ...DB_g39731623b0bc5436858820a94487fdc1_cgraph.map | 2 + ...DB_g39731623b0bc5436858820a94487fdc1_cgraph.md5 | 1 + ...DB_g39731623b0bc5436858820a94487fdc1_cgraph.png | Bin 0 -> 727 bytes ...DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.map | 5 + ...DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.md5 | 1 + ...DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.png | Bin 0 -> 1665 bytes ...DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.map | 2 + ...DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.md5 | 1 + ...DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.png | Bin 0 -> 812 bytes ...DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.map | 2 + ...DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.md5 | 1 + ...DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.png | Bin 0 -> 742 bytes ...DB_g6be7c0922e76acc29542643424cfeac0_cgraph.map | 2 + ...DB_g6be7c0922e76acc29542643424cfeac0_cgraph.md5 | 1 + ...DB_g6be7c0922e76acc29542643424cfeac0_cgraph.png | Bin 0 -> 830 bytes ...DB_g7560f9dab2ecd309290d200ea809375d_cgraph.map | 2 + ...DB_g7560f9dab2ecd309290d200ea809375d_cgraph.md5 | 1 + ...DB_g7560f9dab2ecd309290d200ea809375d_cgraph.png | Bin 0 -> 823 bytes ...DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.map | 2 + ...DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.md5 | 1 + ...DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.png | Bin 0 -> 779 bytes ...DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.map | 5 + ...DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.md5 | 1 + ...DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.png | Bin 0 -> 1543 bytes ...DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.map | 2 + ...DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.md5 | 1 + ...DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.png | Bin 0 -> 870 bytes www/api/group__LMS__Plugin.html | 62 + www/api/index.html | 49 + www/api/lightmediascanner_8c-source.html | 360 +++++ www/api/lightmediascanner_8c.html | 157 +++ www/api/lightmediascanner_8c__incl.map | 4 + www/api/lightmediascanner_8c__incl.md5 | 1 + www/api/lightmediascanner_8c__incl.png | Bin 0 -> 8031 bytes www/api/lightmediascanner_8h-source.html | 101 ++ www/api/lightmediascanner_8h.html | 493 +++++++ www/api/lightmediascanner_8h__dep__incl.map | 12 + www/api/lightmediascanner_8h__dep__incl.md5 | 1 + www/api/lightmediascanner_8h__dep__incl.png | Bin 0 -> 7273 bytes ...lightmediascanner__charset__conv_8c-source.html | 315 +++++ www/api/lightmediascanner__charset__conv_8c.html | 230 ++++ .../lightmediascanner__charset__conv_8c__incl.map | 1 + .../lightmediascanner__charset__conv_8c__incl.md5 | 1 + .../lightmediascanner__charset__conv_8c__incl.png | Bin 0 -> 2883 bytes ...lightmediascanner__charset__conv_8h-source.html | 86 ++ www/api/lightmediascanner__charset__conv_8h.html | 160 +++ ...htmediascanner__charset__conv_8h__dep__incl.map | 13 + ...htmediascanner__charset__conv_8h__dep__incl.md5 | 1 + ...htmediascanner__charset__conv_8h__dep__incl.png | Bin 0 -> 6987 bytes www/api/lightmediascanner__check_8c-source.html | 662 +++++++++ www/api/lightmediascanner__check_8c.html | 144 ++ ..._8c_859492d896e816498edb471315efced1_cgraph.map | 2 + ..._8c_859492d896e816498edb471315efced1_cgraph.md5 | 1 + ..._8c_859492d896e816498edb471315efced1_cgraph.png | Bin 0 -> 666 bytes www/api/lightmediascanner__check_8c__incl.map | 5 + www/api/lightmediascanner__check_8c__incl.md5 | 1 + www/api/lightmediascanner__check_8c__incl.png | Bin 0 -> 13059 bytes www/api/lightmediascanner__db_8h-source.html | 133 ++ www/api/lightmediascanner__db_8h.html | 165 +++ www/api/lightmediascanner__db_8h__dep__incl.map | 4 + www/api/lightmediascanner__db_8h__dep__incl.md5 | 1 + www/api/lightmediascanner__db_8h__dep__incl.png | Bin 0 -> 1981 bytes www/api/lightmediascanner__db_8h__incl.map | 4 + www/api/lightmediascanner__db_8h__incl.md5 | 1 + www/api/lightmediascanner__db_8h__incl.png | Bin 0 -> 2525 bytes .../lightmediascanner__db__audio_8c-source.html | 648 +++++++++ www/api/lightmediascanner__db__audio_8c.html | 124 ++ www/api/lightmediascanner__db__audio_8c__incl.map | 6 + www/api/lightmediascanner__db__audio_8c__incl.md5 | 1 + www/api/lightmediascanner__db__audio_8c__incl.png | Bin 0 -> 3879 bytes .../lightmediascanner__db__common_8c-source.html | 795 +++++++++++ www/api/lightmediascanner__db__common_8c.html | 1415 ++++++++++++++++++++ ..._8c_024e3bd9385fd740f75618716c90b04f_cgraph.map | 4 + ..._8c_024e3bd9385fd740f75618716c90b04f_cgraph.md5 | 1 + ..._8c_024e3bd9385fd740f75618716c90b04f_cgraph.png | Bin 0 -> 1462 bytes ..._8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.map | 3 + ..._8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.md5 | 1 + ..._8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.png | Bin 0 -> 1152 bytes ..._8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.map | 2 + ..._8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.md5 | 1 + ..._8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.png | Bin 0 -> 907 bytes ..._8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.map | 2 + ..._8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.md5 | 1 + ..._8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.png | Bin 0 -> 886 bytes ..._8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.map | 2 + ..._8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.md5 | 1 + ..._8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.png | Bin 0 -> 927 bytes ..._8c_226c6f7ab2e7923b747b7090357ea419_cgraph.map | 1 + ..._8c_226c6f7ab2e7923b747b7090357ea419_cgraph.md5 | 1 + ..._8c_226c6f7ab2e7923b747b7090357ea419_cgraph.png | Bin 0 -> 543 bytes ..._8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.map | 7 + ..._8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.md5 | 1 + ..._8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.png | Bin 0 -> 2648 bytes ..._8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.map | 2 + ..._8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.md5 | 1 + ..._8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.png | Bin 0 -> 904 bytes ..._8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.map | 1 + ..._8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.md5 | 1 + ..._8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.png | Bin 0 -> 538 bytes ..._8c_73ae2cfd7babf80294cf31f02906223b_cgraph.map | 2 + ..._8c_73ae2cfd7babf80294cf31f02906223b_cgraph.md5 | 1 + ..._8c_73ae2cfd7babf80294cf31f02906223b_cgraph.png | Bin 0 -> 857 bytes ..._8c_86b766535f9dc7895da7d0f606201700_cgraph.map | 10 + ..._8c_86b766535f9dc7895da7d0f606201700_cgraph.md5 | 1 + ..._8c_86b766535f9dc7895da7d0f606201700_cgraph.png | Bin 0 -> 4097 bytes ..._8c_9a5886e755eb428ac811956144eee0dc_cgraph.map | 2 + ..._8c_9a5886e755eb428ac811956144eee0dc_cgraph.md5 | 1 + ..._8c_9a5886e755eb428ac811956144eee0dc_cgraph.png | Bin 0 -> 925 bytes ..._8c_9bca88ae79959baff3accee8ce10b558_cgraph.map | 8 + ..._8c_9bca88ae79959baff3accee8ce10b558_cgraph.md5 | 1 + ..._8c_9bca88ae79959baff3accee8ce10b558_cgraph.png | Bin 0 -> 3087 bytes www/api/lightmediascanner__db__common_8c__incl.map | 4 + www/api/lightmediascanner__db__common_8c__incl.md5 | 1 + www/api/lightmediascanner__db__common_8c__incl.png | Bin 0 -> 3853 bytes ..._8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.map | 2 + ..._8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.md5 | 1 + ..._8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.png | Bin 0 -> 888 bytes ..._8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.map | 3 + ..._8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.md5 | 1 + ..._8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.png | Bin 0 -> 1155 bytes ..._8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.map | 2 + ..._8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.md5 | 1 + ..._8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.png | Bin 0 -> 893 bytes ..._8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.map | 3 + ..._8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.md5 | 1 + ..._8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.png | Bin 0 -> 1123 bytes ..._8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.map | 1 + ..._8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.md5 | 1 + ..._8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.png | Bin 0 -> 495 bytes ..._8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.map | 4 + ..._8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.md5 | 1 + ..._8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.png | Bin 0 -> 1440 bytes ..._8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.map | 6 + ..._8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.md5 | 1 + ..._8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.png | Bin 0 -> 2316 bytes .../lightmediascanner__db__image_8c-source.html | 260 ++++ www/api/lightmediascanner__db__image_8c.html | 92 ++ www/api/lightmediascanner__db__image_8c__incl.map | 6 + www/api/lightmediascanner__db__image_8c__incl.md5 | 1 + www/api/lightmediascanner__db__image_8c__incl.png | Bin 0 -> 4068 bytes .../lightmediascanner__db__playlist_8c-source.html | 224 ++++ www/api/lightmediascanner__db__playlist_8c.html | 92 ++ .../lightmediascanner__db__playlist_8c__incl.map | 6 + .../lightmediascanner__db__playlist_8c__incl.md5 | 1 + .../lightmediascanner__db__playlist_8c__incl.png | Bin 0 -> 4121 bytes .../lightmediascanner__db__private_8h-source.html | 100 ++ www/api/lightmediascanner__db__private_8h.html | 1285 ++++++++++++++++++ ..._8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.map | 2 + ..._8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.md5 | 1 + ..._8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.png | Bin 0 -> 907 bytes ..._8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.map | 2 + ..._8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.md5 | 1 + ..._8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.png | Bin 0 -> 886 bytes ..._8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.map | 2 + ..._8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.md5 | 1 + ..._8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.png | Bin 0 -> 893 bytes ..._8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.map | 2 + ..._8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.md5 | 1 + ..._8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.png | Bin 0 -> 857 bytes ..._8h_327d54a6dac083e356fd609298a0cbd5_cgraph.map | 2 + ..._8h_327d54a6dac083e356fd609298a0cbd5_cgraph.md5 | 1 + ..._8h_327d54a6dac083e356fd609298a0cbd5_cgraph.png | Bin 0 -> 888 bytes ..._8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.map | 2 + ..._8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.md5 | 1 + ..._8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.png | Bin 0 -> 927 bytes ..._8h_76941bdbbdb711fff821343e91c2cd97_cgraph.map | 2 + ..._8h_76941bdbbdb711fff821343e91c2cd97_cgraph.md5 | 1 + ..._8h_76941bdbbdb711fff821343e91c2cd97_cgraph.png | Bin 0 -> 904 bytes ...ightmediascanner__db__private_8h__dep__incl.map | 7 + ...ightmediascanner__db__private_8h__dep__incl.md5 | 1 + ...ightmediascanner__db__private_8h__dep__incl.png | Bin 0 -> 3775 bytes .../lightmediascanner__db__private_8h__incl.map | 3 + .../lightmediascanner__db__private_8h__incl.md5 | 1 + .../lightmediascanner__db__private_8h__incl.png | Bin 0 -> 2603 bytes ..._8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.map | 2 + ..._8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.md5 | 1 + ..._8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.png | Bin 0 -> 925 bytes ..._8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.map | 1 + ..._8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.md5 | 1 + ..._8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.png | Bin 0 -> 543 bytes .../lightmediascanner__db__video_8c-source.html | 236 ++++ www/api/lightmediascanner__db__video_8c.html | 92 ++ www/api/lightmediascanner__db__video_8c__incl.map | 6 + www/api/lightmediascanner__db__video_8c__incl.md5 | 1 + www/api/lightmediascanner__db__video_8c__incl.png | Bin 0 -> 3886 bytes www/api/lightmediascanner__plugin_8h-source.html | 75 ++ www/api/lightmediascanner__plugin_8h.html | 189 +++ .../lightmediascanner__plugin_8h__dep__incl.map | 11 + .../lightmediascanner__plugin_8h__dep__incl.md5 | 1 + .../lightmediascanner__plugin_8h__dep__incl.png | Bin 0 -> 6149 bytes www/api/lightmediascanner__plugin_8h__incl.map | 2 + www/api/lightmediascanner__plugin_8h__incl.md5 | 1 + www/api/lightmediascanner__plugin_8h__incl.png | Bin 0 -> 1851 bytes www/api/lightmediascanner__private_8h-source.html | 95 ++ www/api/lightmediascanner__private_8h.html | 494 +++++++ .../lightmediascanner__private_8h__dep__incl.map | 3 + .../lightmediascanner__private_8h__dep__incl.md5 | 1 + .../lightmediascanner__private_8h__dep__incl.png | Bin 0 -> 1465 bytes www/api/lightmediascanner__private_8h__incl.map | 3 + www/api/lightmediascanner__private_8h__incl.md5 | 1 + www/api/lightmediascanner__private_8h__incl.png | Bin 0 -> 4658 bytes www/api/lightmediascanner__process_8c-source.html | 886 ++++++++++++ www/api/lightmediascanner__process_8c.html | 498 +++++++ ..._8c_6e02f78f026b2ad282184476dca13e45_cgraph.map | 1 + ..._8c_6e02f78f026b2ad282184476dca13e45_cgraph.md5 | 1 + ..._8c_6e02f78f026b2ad282184476dca13e45_cgraph.png | Bin 0 -> 512 bytes ..._8c_9bf510645947b478dab39f633bbd35f3_cgraph.map | 1 + ..._8c_9bf510645947b478dab39f633bbd35f3_cgraph.md5 | 1 + ..._8c_9bf510645947b478dab39f633bbd35f3_cgraph.png | Bin 0 -> 509 bytes www/api/lightmediascanner__process_8c__incl.map | 5 + www/api/lightmediascanner__process_8c__incl.md5 | 1 + www/api/lightmediascanner__process_8c__incl.png | Bin 0 -> 12343 bytes ..._8c_c2f07fb73717514237862c98dbf023b2_cgraph.map | 4 + ..._8c_c2f07fb73717514237862c98dbf023b2_cgraph.md5 | 1 + ..._8c_c2f07fb73717514237862c98dbf023b2_cgraph.png | Bin 0 -> 1381 bytes ..._8c_c321bebfc5c24cbbac30031202c460e9_cgraph.map | 1 + ..._8c_c321bebfc5c24cbbac30031202c460e9_cgraph.md5 | 1 + ..._8c_c321bebfc5c24cbbac30031202c460e9_cgraph.png | Bin 0 -> 517 bytes ..._8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.map | 2 + ..._8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.md5 | 1 + ..._8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.png | Bin 0 -> 646 bytes www/api/lightmediascanner__utils_8c-source.html | 117 ++ www/api/lightmediascanner__utils_8c.html | 138 ++ www/api/lightmediascanner__utils_8c__incl.map | 1 + www/api/lightmediascanner__utils_8c__incl.md5 | 1 + www/api/lightmediascanner__utils_8c__incl.png | Bin 0 -> 1303 bytes www/api/lightmediascanner__utils_8h-source.html | 73 + www/api/lightmediascanner__utils_8h.html | 232 ++++ www/api/lightmediascanner__utils_8h__dep__incl.map | 6 + www/api/lightmediascanner__utils_8h__dep__incl.md5 | 1 + www/api/lightmediascanner__utils_8h__dep__incl.png | Bin 0 -> 2606 bytes www/api/modules.html | 26 + www/api/structfds.html | 83 ++ www/api/structlms.html | 191 +++ www/api/structlms__audio__info.html | 201 +++ www/api/structlms__audio__info__coll__graph.map | 3 + www/api/structlms__audio__info__coll__graph.md5 | 1 + www/api/structlms__audio__info__coll__graph.png | Bin 0 -> 1350 bytes www/api/structlms__coll__graph.map | 6 + www/api/structlms__coll__graph.md5 | 1 + www/api/structlms__coll__graph.png | Bin 0 -> 1947 bytes www/api/structlms__context.html | 79 ++ www/api/structlms__db__cache.html | 86 ++ www/api/structlms__db__cache__coll__graph.map | 3 + www/api/structlms__db__cache__coll__graph.md5 | 1 + www/api/structlms__db__cache__coll__graph.png | Bin 0 -> 860 bytes www/api/structlms__db__cache__entry.html | 83 ++ www/api/structlms__file__info.html | 188 +++ www/api/structlms__gps__info.html | 101 ++ www/api/structlms__image__info.html | 201 +++ www/api/structlms__image__info__coll__graph.map | 6 + www/api/structlms__image__info__coll__graph.md5 | 1 + www/api/structlms__image__info__coll__graph.png | Bin 0 -> 1942 bytes www/api/structlms__playlist__info.html | 106 ++ www/api/structlms__playlist__info__coll__graph.map | 3 + www/api/structlms__playlist__info__coll__graph.md5 | 1 + www/api/structlms__playlist__info__coll__graph.png | Bin 0 -> 936 bytes www/api/structlms__plugin.html | 184 +++ www/api/structlms__string__size.html | 81 ++ www/api/structlms__video__info.html | 106 ++ www/api/structlms__video__info__coll__graph.map | 3 + www/api/structlms__video__info__coll__graph.md5 | 1 + www/api/structlms__video__info__coll__graph.png | Bin 0 -> 929 bytes www/api/structparser.html | 105 ++ www/api/structparser__coll__graph.map | 3 + www/api/structparser__coll__graph.md5 | 1 + www/api/structparser__coll__graph.png | Bin 0 -> 1117 bytes www/api/structpinfo.html | 149 +++ www/api/structpinfo__coll__graph.map | 12 + www/api/structpinfo__coll__graph.md5 | 1 + www/api/structpinfo__coll__graph.png | Bin 0 -> 3039 bytes www/api/tab_b.gif | Bin 0 -> 35 bytes www/api/tab_l.gif | Bin 0 -> 706 bytes www/api/tab_r.gif | Bin 0 -> 2585 bytes www/api/tabs.css | 102 ++ 333 files changed, 17992 insertions(+) create mode 100644 www/api/annotated.html create mode 100644 www/api/classes.html create mode 100644 www/api/doxygen.css create mode 100644 www/api/doxygen.png create mode 100644 www/api/files.html create mode 100644 www/api/functions.html create mode 100644 www/api/functions_vars.html create mode 100644 www/api/globals.html create mode 100644 www/api/globals_0x61.html create mode 100644 www/api/globals_0x63.html create mode 100644 www/api/globals_0x64.html create mode 100644 www/api/globals_0x66.html create mode 100644 www/api/globals_0x67.html create mode 100644 www/api/globals_0x69.html create mode 100644 www/api/globals_0x6c.html create mode 100644 www/api/globals_0x6e.html create mode 100644 www/api/globals_0x70.html create mode 100644 www/api/globals_0x72.html create mode 100644 www/api/globals_0x73.html create mode 100644 www/api/globals_0x74.html create mode 100644 www/api/globals_0x77.html create mode 100644 www/api/globals_defs.html create mode 100644 www/api/globals_func.html create mode 100644 www/api/globals_type.html create mode 100644 www/api/globals_vars.html create mode 100644 www/api/graph_legend.dot create mode 100644 www/api/graph_legend.html create mode 100644 www/api/graph_legend.png create mode 100644 www/api/group__LMS__API.html create mode 100644 www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.map create mode 100644 www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.md5 create mode 100644 www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.png create mode 100644 www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.map create mode 100644 www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.md5 create mode 100644 www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.png create mode 100644 www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.map create mode 100644 www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.md5 create mode 100644 www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.png create mode 100644 www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.map create mode 100644 www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.md5 create mode 100644 www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.png create mode 100644 www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.map create mode 100644 www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.md5 create mode 100644 www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.png create mode 100644 www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.map create mode 100644 www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.md5 create mode 100644 www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.png create mode 100644 www/api/group__LMS__CHARSET.html create mode 100644 www/api/group__LMS__DB.html create mode 100644 www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.map create mode 100644 www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.md5 create mode 100644 www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.png create mode 100644 www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.map create mode 100644 www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.md5 create mode 100644 www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.png create mode 100644 www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.map create mode 100644 www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.md5 create mode 100644 www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.png create mode 100644 www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.map create mode 100644 www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.md5 create mode 100644 www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.png create mode 100644 www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.map create mode 100644 www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.md5 create mode 100644 www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.png create mode 100644 www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.map create mode 100644 www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.md5 create mode 100644 www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.png create mode 100644 www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.map create mode 100644 www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.md5 create mode 100644 www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.png create mode 100644 www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.map create mode 100644 www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.md5 create mode 100644 www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.png create mode 100644 www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.map create mode 100644 www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.md5 create mode 100644 www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.png create mode 100644 www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.map create mode 100644 www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.md5 create mode 100644 www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.png create mode 100644 www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.map create mode 100644 www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.md5 create mode 100644 www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.png create mode 100644 www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.map create mode 100644 www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.md5 create mode 100644 www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.png create mode 100644 www/api/group__LMS__Plugin.html create mode 100644 www/api/index.html create mode 100644 www/api/lightmediascanner_8c-source.html create mode 100644 www/api/lightmediascanner_8c.html create mode 100644 www/api/lightmediascanner_8c__incl.map create mode 100644 www/api/lightmediascanner_8c__incl.md5 create mode 100644 www/api/lightmediascanner_8c__incl.png create mode 100644 www/api/lightmediascanner_8h-source.html create mode 100644 www/api/lightmediascanner_8h.html create mode 100644 www/api/lightmediascanner_8h__dep__incl.map create mode 100644 www/api/lightmediascanner_8h__dep__incl.md5 create mode 100644 www/api/lightmediascanner_8h__dep__incl.png create mode 100644 www/api/lightmediascanner__charset__conv_8c-source.html create mode 100644 www/api/lightmediascanner__charset__conv_8c.html create mode 100644 www/api/lightmediascanner__charset__conv_8c__incl.map create mode 100644 www/api/lightmediascanner__charset__conv_8c__incl.md5 create mode 100644 www/api/lightmediascanner__charset__conv_8c__incl.png create mode 100644 www/api/lightmediascanner__charset__conv_8h-source.html create mode 100644 www/api/lightmediascanner__charset__conv_8h.html create mode 100644 www/api/lightmediascanner__charset__conv_8h__dep__incl.map create mode 100644 www/api/lightmediascanner__charset__conv_8h__dep__incl.md5 create mode 100644 www/api/lightmediascanner__charset__conv_8h__dep__incl.png create mode 100644 www/api/lightmediascanner__check_8c-source.html create mode 100644 www/api/lightmediascanner__check_8c.html create mode 100644 www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.map create mode 100644 www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.md5 create mode 100644 www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.png create mode 100644 www/api/lightmediascanner__check_8c__incl.map create mode 100644 www/api/lightmediascanner__check_8c__incl.md5 create mode 100644 www/api/lightmediascanner__check_8c__incl.png create mode 100644 www/api/lightmediascanner__db_8h-source.html create mode 100644 www/api/lightmediascanner__db_8h.html create mode 100644 www/api/lightmediascanner__db_8h__dep__incl.map create mode 100644 www/api/lightmediascanner__db_8h__dep__incl.md5 create mode 100644 www/api/lightmediascanner__db_8h__dep__incl.png create mode 100644 www/api/lightmediascanner__db_8h__incl.map create mode 100644 www/api/lightmediascanner__db_8h__incl.md5 create mode 100644 www/api/lightmediascanner__db_8h__incl.png create mode 100644 www/api/lightmediascanner__db__audio_8c-source.html create mode 100644 www/api/lightmediascanner__db__audio_8c.html create mode 100644 www/api/lightmediascanner__db__audio_8c__incl.map create mode 100644 www/api/lightmediascanner__db__audio_8c__incl.md5 create mode 100644 www/api/lightmediascanner__db__audio_8c__incl.png create mode 100644 www/api/lightmediascanner__db__common_8c-source.html create mode 100644 www/api/lightmediascanner__db__common_8c.html create mode 100644 www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c__incl.map create mode 100644 www/api/lightmediascanner__db__common_8c__incl.md5 create mode 100644 www/api/lightmediascanner__db__common_8c__incl.png create mode 100644 www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.png create mode 100644 www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.map create mode 100644 www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.png create mode 100644 www/api/lightmediascanner__db__image_8c-source.html create mode 100644 www/api/lightmediascanner__db__image_8c.html create mode 100644 www/api/lightmediascanner__db__image_8c__incl.map create mode 100644 www/api/lightmediascanner__db__image_8c__incl.md5 create mode 100644 www/api/lightmediascanner__db__image_8c__incl.png create mode 100644 www/api/lightmediascanner__db__playlist_8c-source.html create mode 100644 www/api/lightmediascanner__db__playlist_8c.html create mode 100644 www/api/lightmediascanner__db__playlist_8c__incl.map create mode 100644 www/api/lightmediascanner__db__playlist_8c__incl.md5 create mode 100644 www/api/lightmediascanner__db__playlist_8c__incl.png create mode 100644 www/api/lightmediascanner__db__private_8h-source.html create mode 100644 www/api/lightmediascanner__db__private_8h.html create mode 100644 www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.map create mode 100644 www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.png create mode 100644 www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.map create mode 100644 www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.png create mode 100644 www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.map create mode 100644 www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.png create mode 100644 www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.map create mode 100644 www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.png create mode 100644 www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.map create mode 100644 www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.png create mode 100644 www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.map create mode 100644 www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.png create mode 100644 www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.map create mode 100644 www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.png create mode 100644 www/api/lightmediascanner__db__private_8h__dep__incl.map create mode 100644 www/api/lightmediascanner__db__private_8h__dep__incl.md5 create mode 100644 www/api/lightmediascanner__db__private_8h__dep__incl.png create mode 100644 www/api/lightmediascanner__db__private_8h__incl.map create mode 100644 www/api/lightmediascanner__db__private_8h__incl.md5 create mode 100644 www/api/lightmediascanner__db__private_8h__incl.png create mode 100644 www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.map create mode 100644 www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.png create mode 100644 www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.map create mode 100644 www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.md5 create mode 100644 www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.png create mode 100644 www/api/lightmediascanner__db__video_8c-source.html create mode 100644 www/api/lightmediascanner__db__video_8c.html create mode 100644 www/api/lightmediascanner__db__video_8c__incl.map create mode 100644 www/api/lightmediascanner__db__video_8c__incl.md5 create mode 100644 www/api/lightmediascanner__db__video_8c__incl.png create mode 100644 www/api/lightmediascanner__plugin_8h-source.html create mode 100644 www/api/lightmediascanner__plugin_8h.html create mode 100644 www/api/lightmediascanner__plugin_8h__dep__incl.map create mode 100644 www/api/lightmediascanner__plugin_8h__dep__incl.md5 create mode 100644 www/api/lightmediascanner__plugin_8h__dep__incl.png create mode 100644 www/api/lightmediascanner__plugin_8h__incl.map create mode 100644 www/api/lightmediascanner__plugin_8h__incl.md5 create mode 100644 www/api/lightmediascanner__plugin_8h__incl.png create mode 100644 www/api/lightmediascanner__private_8h-source.html create mode 100644 www/api/lightmediascanner__private_8h.html create mode 100644 www/api/lightmediascanner__private_8h__dep__incl.map create mode 100644 www/api/lightmediascanner__private_8h__dep__incl.md5 create mode 100644 www/api/lightmediascanner__private_8h__dep__incl.png create mode 100644 www/api/lightmediascanner__private_8h__incl.map create mode 100644 www/api/lightmediascanner__private_8h__incl.md5 create mode 100644 www/api/lightmediascanner__private_8h__incl.png create mode 100644 www/api/lightmediascanner__process_8c-source.html create mode 100644 www/api/lightmediascanner__process_8c.html create mode 100644 www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.map create mode 100644 www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.md5 create mode 100644 www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.png create mode 100644 www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.map create mode 100644 www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.md5 create mode 100644 www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.png create mode 100644 www/api/lightmediascanner__process_8c__incl.map create mode 100644 www/api/lightmediascanner__process_8c__incl.md5 create mode 100644 www/api/lightmediascanner__process_8c__incl.png create mode 100644 www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.map create mode 100644 www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.md5 create mode 100644 www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.png create mode 100644 www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.map create mode 100644 www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.md5 create mode 100644 www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.png create mode 100644 www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.map create mode 100644 www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.md5 create mode 100644 www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.png create mode 100644 www/api/lightmediascanner__utils_8c-source.html create mode 100644 www/api/lightmediascanner__utils_8c.html create mode 100644 www/api/lightmediascanner__utils_8c__incl.map create mode 100644 www/api/lightmediascanner__utils_8c__incl.md5 create mode 100644 www/api/lightmediascanner__utils_8c__incl.png create mode 100644 www/api/lightmediascanner__utils_8h-source.html create mode 100644 www/api/lightmediascanner__utils_8h.html create mode 100644 www/api/lightmediascanner__utils_8h__dep__incl.map create mode 100644 www/api/lightmediascanner__utils_8h__dep__incl.md5 create mode 100644 www/api/lightmediascanner__utils_8h__dep__incl.png create mode 100644 www/api/modules.html create mode 100644 www/api/structfds.html create mode 100644 www/api/structlms.html create mode 100644 www/api/structlms__audio__info.html create mode 100644 www/api/structlms__audio__info__coll__graph.map create mode 100644 www/api/structlms__audio__info__coll__graph.md5 create mode 100644 www/api/structlms__audio__info__coll__graph.png create mode 100644 www/api/structlms__coll__graph.map create mode 100644 www/api/structlms__coll__graph.md5 create mode 100644 www/api/structlms__coll__graph.png create mode 100644 www/api/structlms__context.html create mode 100644 www/api/structlms__db__cache.html create mode 100644 www/api/structlms__db__cache__coll__graph.map create mode 100644 www/api/structlms__db__cache__coll__graph.md5 create mode 100644 www/api/structlms__db__cache__coll__graph.png create mode 100644 www/api/structlms__db__cache__entry.html create mode 100644 www/api/structlms__file__info.html create mode 100644 www/api/structlms__gps__info.html create mode 100644 www/api/structlms__image__info.html create mode 100644 www/api/structlms__image__info__coll__graph.map create mode 100644 www/api/structlms__image__info__coll__graph.md5 create mode 100644 www/api/structlms__image__info__coll__graph.png create mode 100644 www/api/structlms__playlist__info.html create mode 100644 www/api/structlms__playlist__info__coll__graph.map create mode 100644 www/api/structlms__playlist__info__coll__graph.md5 create mode 100644 www/api/structlms__playlist__info__coll__graph.png create mode 100644 www/api/structlms__plugin.html create mode 100644 www/api/structlms__string__size.html create mode 100644 www/api/structlms__video__info.html create mode 100644 www/api/structlms__video__info__coll__graph.map create mode 100644 www/api/structlms__video__info__coll__graph.md5 create mode 100644 www/api/structlms__video__info__coll__graph.png create mode 100644 www/api/structparser.html create mode 100644 www/api/structparser__coll__graph.map create mode 100644 www/api/structparser__coll__graph.md5 create mode 100644 www/api/structparser__coll__graph.png create mode 100644 www/api/structpinfo.html create mode 100644 www/api/structpinfo__coll__graph.map create mode 100644 www/api/structpinfo__coll__graph.md5 create mode 100644 www/api/structpinfo__coll__graph.png create mode 100644 www/api/tab_b.gif create mode 100644 www/api/tab_l.gif create mode 100644 www/api/tab_r.gif create mode 100644 www/api/tabs.css diff --git a/www/api/annotated.html b/www/api/annotated.html new file mode 100644 index 0000000..4647f6a --- /dev/null +++ b/www/api/annotated.html @@ -0,0 +1,44 @@ + + +Light Media Scanner: Data Structures + + + + +
+ +
+
+ +
+

Light Media Scanner Data Structures

Here are the data structures with brief descriptions: + + + + + + + + + + + + + + + +
fds
lms
lms_audio_info
lms_context
lms_db_cache
lms_db_cache_entry
lms_file_info
lms_gps_info
lms_image_info
lms_playlist_info
lms_plugin
lms_string_size
lms_video_info
parser
pinfo
+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/classes.html b/www/api/classes.html new file mode 100644 index 0000000..2ae9588 --- /dev/null +++ b/www/api/classes.html @@ -0,0 +1,40 @@ + + +Light Media Scanner: Alphabetical List + + + + +
+ +
+
+ +
+

Light Media Scanner Data Structure Index

A | C | D | F | G | I | L | P | S | V

+ +
  A  
+
lms_file_info   parser   
lms_audio_info   
  G  
+
pinfo   
  C  
+
lms_gps_info   lms_playlist_info   
lms_context   
  I  
+
lms_plugin   
  D  
+
lms_image_info   
  S  
+
lms_db_cache   
  L  
+
lms_string_size   
lms_db_cache_entry   lms   
  V  
+
  F  
+
  P  
+
lms_video_info   
fds   

A | C | D | F | G | I | L | P | S | V

+


Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/doxygen.css b/www/api/doxygen.css new file mode 100644 index 0000000..c7db1a8 --- /dev/null +++ b/www/api/doxygen.css @@ -0,0 +1,358 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace, fixed; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +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; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +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 } +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.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%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + +/* Style for detailed member documentation */ +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; +} +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +.memitem { + padding: 4px; + background-color: #eef3f5; + border-width: 1px; + border-style: solid; + border-color: #dedeee; + -moz-border-radius: 8px 8px 8px 8px; +} +.memname { + white-space: nowrap; + font-weight: bold; +} +.memdoc{ + padding-left: 10px; +} +.memproto { + background-color: #d5e1e8; + width: 100%; + border-width: 1px; + border-style: solid; + border-color: #84b0c7; + font-weight: bold; + -moz-border-radius: 8px 8px 8px 8px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { + color: #602020; + font-style: italic; + white-space: nowrap; +} +/* End Styling for detailed member documentation */ + +/* for the tree view */ +.ftvtree { + font-family: sans-serif; + margin:0.5em; +} +.directory { font-size: 9pt; font-weight: bold; } +.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } +.directory > h3 { margin-top: 0; } +.directory p { margin: 0px; white-space: nowrap; } +.directory div { display: none; margin: 0px; } +.directory img { vertical-align: -30%; } diff --git a/www/api/doxygen.png b/www/api/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..f0a274bbaffdd67f6d784c894d9cf28729db0e14 GIT binary patch literal 1281 zcmaJ>ZA?>F7(Vx-ms?uoS`b@hdRtpo6o^%HU>M$hfGrBvQnk$LE?p^P!kn&ikhyq! zX~V@&tPF5Qt@V?oTL96Bi%aRiwbe1)9DWQI#?)=HxS7QSw`J`5fAJ*eJbB;uNuKA& zdERDo*{Y<(If(#(B$Lr#;nB(8Y#ia=ZCeW?JfPLuQY`=@cW$k}Rivq|vbxGrRq1Tl9;+(gNt?}UtVKM2`T5t1jLzuL@0UIs`S#vlhl4)^ zLgSYrPj@$+`|j?eSbXTmiHGkWxV8V}BzNR?pl9k_s4pDu9vd5a_UzZEPk)}Ad{AV_ zzddrjrh4=Imr`E06;LY{)YYt?o}L~H@7C}F^WB!Ra=v`Q0bj{>5&$66CWF>mf6vjP z2N>RRY6ZYa=K`76>+|_)Xdwko+7wv}7cN|btOhWb(*{sta~6b?S8Omrxw}!4`NhGr zZVpNqpu1@BE`QGWNTpEpcJVW5izu~2B^GlM?1(OPg)zwW;QcP@Ltcclm>XbJL9C|j z=9!2?ua=uIlf0%AndzHsRC}IyTL$EhAee(fdKB`?27KeS^2M8M_7b~PiCFO&r5LC7 z7gl1*a<8;SjNaw#h=843_AV9iZbWQOAp5YOC^&_F*9K0> zB|6%IDb?aM#3viTxkLU4aXg&@+CkNTOnQ1iMP*^?b|^lJy$4C)Zk4isV!|RZ*XhXh zw8q3$=*0LeGC!XI_Wc?dkT~3+*Gu%%yIqP+Wr3H$=&ROMQU6q}Ag^P~>c5vAEO;a- z_dK-3PPeKar%)6$j~vI2#*-YH!1h6HYVtwCX5_wM`iF#UKz&&@9Oo5w3%XGYrX zW>dY~)SG-((Yim%`InwgTvyRC?e=Wh^8KCao!R6Eg&TpVWUY1sN~4G}V?nFnEGo-; zHZ_$eW9-GnC%^WS9b z@p;-$oH#MtC0v>Q$HX%4^JdFdO$0cbv-W)Q TtK}Eh@>>I#ipmV1>S*>q-hkC} literal 0 HcmV?d00001 diff --git a/www/api/files.html b/www/api/files.html new file mode 100644 index 0000000..0767357 --- /dev/null +++ b/www/api/files.html @@ -0,0 +1,45 @@ + + +Light Media Scanner: File Index + + + + + +
+ +
+

Light Media Scanner File List

Here is a list of all files with brief descriptions: + + + + + + + + + + + + + + + + + +
src/lib/lightmediascanner.c [code]
src/lib/lightmediascanner.h [code]
src/lib/lightmediascanner_charset_conv.c [code]
src/lib/lightmediascanner_charset_conv.h [code]
src/lib/lightmediascanner_check.c [code]
src/lib/lightmediascanner_db.h [code]
src/lib/lightmediascanner_db_audio.c [code]
src/lib/lightmediascanner_db_common.c [code]
src/lib/lightmediascanner_db_image.c [code]
src/lib/lightmediascanner_db_playlist.c [code]
src/lib/lightmediascanner_db_private.h [code]
src/lib/lightmediascanner_db_video.c [code]
src/lib/lightmediascanner_plugin.h [code]
src/lib/lightmediascanner_private.h [code]
src/lib/lightmediascanner_process.c [code]
src/lib/lightmediascanner_utils.c [code]
src/lib/lightmediascanner_utils.h [code]
+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/functions.html b/www/api/functions.html new file mode 100644 index 0000000..d269bed --- /dev/null +++ b/www/api/functions.html @@ -0,0 +1,211 @@ + + +Light Media Scanner: Data Fields + + + + + + +
+ +
+
+ +
+ +

+Here is a list of all struct and union fields with links to the structures/unions they belong to: +

+

- a -

+

- b -

+

- c -

+

- d -

+

- e -

+

- f -

+

- g -

+

- h -

+

- i -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- t -

+

- w -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/functions_vars.html b/www/api/functions_vars.html new file mode 100644 index 0000000..4b08d3e --- /dev/null +++ b/www/api/functions_vars.html @@ -0,0 +1,211 @@ + + +Light Media Scanner: Data Fields - Variables + + + + + + +
+ +
+
+ +
+ +

+  +

+

- a -

+

- b -

+

- c -

+

- d -

+

- e -

+

- f -

+

- g -

+

- h -

+

- i -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- t -

+

- w -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals.html b/www/api/globals.html new file mode 100644 index 0000000..b4d869d --- /dev/null +++ b/www/api/globals.html @@ -0,0 +1,78 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +
+ +
+ +

+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: +

+

- _ -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals_0x61.html b/www/api/globals_0x61.html new file mode 100644 index 0000000..f137da6 --- /dev/null +++ b/www/api/globals_0x61.html @@ -0,0 +1,64 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +
+ +
+ +

+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: +

+

- a -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals_0x63.html b/www/api/globals_0x63.html new file mode 100644 index 0000000..b301685 --- /dev/null +++ b/www/api/globals_0x63.html @@ -0,0 +1,99 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +
+ +
+ +

+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: +

+

- c -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals_0x64.html b/www/api/globals_0x64.html new file mode 100644 index 0000000..09ad8e1 --- /dev/null +++ b/www/api/globals_0x64.html @@ -0,0 +1,223 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +
+ +
+ +

+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: +

+

- d -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals_0x66.html b/www/api/globals_0x66.html new file mode 100644 index 0000000..53e5560 --- /dev/null +++ b/www/api/globals_0x66.html @@ -0,0 +1,65 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +
+ +
+ +

+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: +

+

- f -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals_0x67.html b/www/api/globals_0x67.html new file mode 100644 index 0000000..7625a09 --- /dev/null +++ b/www/api/globals_0x67.html @@ -0,0 +1,89 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +
+ +
+ +

+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: +

+

- g -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals_0x69.html b/www/api/globals_0x69.html new file mode 100644 index 0000000..f0e287c --- /dev/null +++ b/www/api/globals_0x69.html @@ -0,0 +1,62 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +
+ +
+ +

+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: +

+

- i -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals_0x6c.html b/www/api/globals_0x6c.html new file mode 100644 index 0000000..8ca2fbd --- /dev/null +++ b/www/api/globals_0x6c.html @@ -0,0 +1,63 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +
+ +
+ +

+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: +

+

- l -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals_0x6e.html b/www/api/globals_0x6e.html new file mode 100644 index 0000000..0efd164 --- /dev/null +++ b/www/api/globals_0x6e.html @@ -0,0 +1,62 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +
+ +
+ +

+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: +

+

- n -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals_0x70.html b/www/api/globals_0x70.html new file mode 100644 index 0000000..2f1c8e0 --- /dev/null +++ b/www/api/globals_0x70.html @@ -0,0 +1,105 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +
+ +
+ +

+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: +

+

- p -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals_0x72.html b/www/api/globals_0x72.html new file mode 100644 index 0000000..8ea5a28 --- /dev/null +++ b/www/api/globals_0x72.html @@ -0,0 +1,62 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +
+ +
+ +

+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: +

+

- r -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals_0x73.html b/www/api/globals_0x73.html new file mode 100644 index 0000000..35208df --- /dev/null +++ b/www/api/globals_0x73.html @@ -0,0 +1,72 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +
+ +
+ +

+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: +

+

- s -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals_0x74.html b/www/api/globals_0x74.html new file mode 100644 index 0000000..acfd9ac --- /dev/null +++ b/www/api/globals_0x74.html @@ -0,0 +1,61 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +
+ +
+ +

+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: +

+

- t -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals_0x77.html b/www/api/globals_0x77.html new file mode 100644 index 0000000..759c98a --- /dev/null +++ b/www/api/globals_0x77.html @@ -0,0 +1,62 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +
+ +
+ +

+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: +

+

- w -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals_defs.html b/www/api/globals_defs.html new file mode 100644 index 0000000..e7f1b91 --- /dev/null +++ b/www/api/globals_defs.html @@ -0,0 +1,121 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +
+ +
+ +

+  +

+

- _ -

+

- a -

+

- c -

+

- d -

+

- g -

+

- l -

+

- p -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals_func.html b/www/api/globals_func.html new file mode 100644 index 0000000..e701162 --- /dev/null +++ b/www/api/globals_func.html @@ -0,0 +1,329 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +
+ +
+ +

+  +

+

- c -

+

- d -

+

- f -

+

- g -

+

- i -

+

- n -

+

- p -

+

- r -

+

- s -

+

- w -

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals_type.html b/www/api/globals_type.html new file mode 100644 index 0000000..63bdbec --- /dev/null +++ b/www/api/globals_type.html @@ -0,0 +1,65 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +  +

+

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/globals_vars.html b/www/api/globals_vars.html new file mode 100644 index 0000000..05ed305 --- /dev/null +++ b/www/api/globals_vars.html @@ -0,0 +1,41 @@ + + +Light Media Scanner: Data Fields + + + + + +
+ +
+ +  +

+

+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/graph_legend.dot b/www/api/graph_legend.dot new file mode 100644 index 0000000..ee8e8bc --- /dev/null +++ b/www/api/graph_legend.dot @@ -0,0 +1,23 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="FreeSans.ttf",fontsize=10,labelfontname="FreeSans.ttf",labelfontsize=10]; + node [fontname="FreeSans.ttf",fontsize=10,shape=record]; + Node9 [shape="box",label="Inherited",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",fillcolor="grey75",style="filled" fontcolor="black"]; + Node10 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans.ttf"]; + Node10 [shape="box",label="PublicBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",color="black",URL="$classPublicBase.html"]; + Node11 -> Node10 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans.ttf"]; + Node11 [shape="box",label="Truncated",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",color="red",URL="$classTruncated.html"]; + Node13 -> Node9 [dir=back,color="darkgreen",fontsize=10,style="solid",fontname="FreeSans.ttf"]; + Node13 [shape="box",label="ProtectedBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",color="black",URL="$classProtectedBase.html"]; + Node14 -> Node9 [dir=back,color="firebrick4",fontsize=10,style="solid",fontname="FreeSans.ttf"]; + Node14 [shape="box",label="PrivateBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",color="black",URL="$classPrivateBase.html"]; + Node15 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans.ttf"]; + Node15 [shape="box",label="Undocumented",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",color="grey75"]; + Node16 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans.ttf"]; + Node16 [shape="box",label="Templ< int >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",color="black",URL="$classTempl.html"]; + Node17 -> Node16 [dir=back,color="orange",fontsize=10,style="dashed",label="< int >",fontname="FreeSans.ttf"]; + Node17 [shape="box",label="Templ< T >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",color="black",URL="$classTempl.html"]; + Node18 -> Node9 [dir=back,color="darkorchid3",fontsize=10,style="dashed",label="m_usedClass",fontname="FreeSans.ttf"]; + Node18 [shape="box",label="Used",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",color="black",URL="$classUsed.html"]; +} diff --git a/www/api/graph_legend.html b/www/api/graph_legend.html new file mode 100644 index 0000000..671a92e --- /dev/null +++ b/www/api/graph_legend.html @@ -0,0 +1,82 @@ + + +Light Media Scanner: Graph Legend + + + + + +

Graph Legend

This page explains how to interpret the graphs that are generated by doxygen.

+Consider the following example:

/*! Invisible class because of truncation */
+class Invisible { };
+
+/*! Truncated class, inheritance relation is hidden */
+class Truncated : public Invisible { };
+
+/* Class not documented with doxygen comments */
+class Undocumented { };
+
+/*! Class that is inherited using public inheritance */
+class PublicBase : public Truncated { };
+
+/*! A template class */
+template<class T> class Templ { };
+
+/*! Class that is inherited using protected inheritance */
+class ProtectedBase { };
+
+/*! Class that is inherited using private inheritance */
+class PrivateBase { };
+
+/*! Class that is used by the Inherited class */
+class Used { };
+
+/*! Super class that inherits a number of other classes */
+class Inherited : public PublicBase,
+                  protected ProtectedBase,
+                  private PrivateBase,
+                  public Undocumented,
+                  public Templ<int>
+{
+  private:
+    Used *m_usedClass;
+};
+
If the MAX_DOT_GRAPH_HEIGHT tag in the configuration file is set to 240 this will result in the following graph:

+

+graph_legend.png +
+

+The boxes in the above graph have the following meaning:

    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a grey border denotes an undocumented struct or class.
  • +
  • +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.
  • +
+The arrows have the following meaning:
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +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.
  • +
  • +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.
  • +
+
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/graph_legend.png b/www/api/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..0ef772a8c8fa0e5e75d6bfedd669cff0a4abdb31 GIT binary patch literal 2961 zcmZWrc{tST7oXBXmO;vvi74SRQMP7Olx*3um9DXbxhRtDYhr{L5{j58L+&7reVM^b zS%wxGOElCl8M4LjWt0$p)9*g__uTvZ-apQJ-m|>#Ip;mkb3Vy-HfExGAP`yE8_mtl{r&xX zE52GkH!PaZZ4bR@;{bt#XEF>R5MeosbH$=D40zB2Q4*{XF7gy;i3GYul>h z74J)jj=1F#eJAQl$ASqancmF!Zr0j_i6kT#0TBa$+R#l4XDbPP>>3o}FT~m1Do28z zE*pu9_$|>)oUWY2ksyw4B=%JXP_m9D4+^;y#^J`6*c_!~M-?C74pAii{zHyLh7Qu? zVxpOOCn#tk3sX{~E325&Gtoko&G`HC@^6W^4*=Zj7E#!sPQ$&xtt~c*iVRC$`}(0( zaBACJw;16?0ms~(ysoncwcc14(>d?+8EZ1~05iijln1y)T-&ejzn8=oCk`G=i!ZVK z053eP7es&}ebP5`*OU*hgsC8vb^&gud+GiA@}S6>w#U7ZTC{mnJQfAEi(6-YkJLhz zj=rrGVa?|{=A+A08GgpM2TwMYFw><}gDV6Q@0Mf73ac7pmK4rEyDxa+xRr`^62~*+ zNN6iK{dYe9NVXV8`LSWbC%DZ9)3TA!RCZm3T8;wNX2W=#wh3X58>q^rS?Y>g&g%@}~hDCl6As}6P`vUd|Al)}p4+`eN=#LMu=NEOx zzONCaC?Y{Ofu9`^OObTNzkj106!ZdiXd~ma6xgvDIUI@q31nc#BDO|b^X1P!@oLqN zD$ow^XwAKs!MCel(20<>yDSau0m|LOYVb}>YAEpPs=sG1L=^qP3Kwx*;6uXeZu*<$ z$WzF9o?R39&vMt2a^|~no#QmvVAUpb^=WL)ulv&rtZ=Va$iLqI@A02ujalgM4gM+l zD^MWg!e5Q_uSnAsb!bMQ@XgN!`B@=L#*sC0IfHM%FP6H-oczdH;(YEotGhxRRWe@K z8jDKM`2~m5mA^#0g9GRFKmkq` zqC%9~rFk)eN?R}m8x@`waPu`=EB}bS;;f#<}p640w zq5byLuA%2EZ5C3tHCtvrb0;4k`0d3LMPw;?UPtIB zt79Q!{93?KF57R3DB6I3kVhON>RU+Z{pq4A*u%yg4m=SQc3JYPVEg?}zWW8Q_?tsZ$L{DaOBidi?S%-O>wp1Eqj>aVdm2xN1S{v! zYV5&#$}OjQ;v?iR9y4w}D=WZgH5dx6$~xtFW7n-~g{OLPUCXzh&f>j>nBV|(8>R)s zgv+3$bJbz|N^}ddA+9GkD6+w8P?)aAAN`g*p+pkwX-<|oR7NoGgTi@i27`hY>G5A* zArDBZc2m`9Bq|lr3Z6`jk0^ndcma(VUE0CDeljRBn=n!`)5e_pcEb>~jD{`s;eygF zqh}t8Y(;MrO|I@#i%DY#*Tkk@`RTOL&@rxDJd^Fl2^Ow902oAb9qn7`_`B_S;bB(@ z1J|5_8)m1YI}ew}l}syXEQGGti+yICwGKEp!49Y9_H1(N<+W?()HzN;I`3-{g_)ln zU4vXG<3gLYr)gm^s3KoA*D&z;%m}lMROmu&mH7nV1~(_3-!GFyHJ7+BrrcOFMguzn zxhMp}JCW-0dt^Q62#;SVndNZGaXuWMqb2G)Nlv;*hA3-+9DJ*+V8zZj$c5TGRMFa^ zB_dhzoFi(hp)Ajqh1yoe<3xu${T#Z)`h02Jb{W9=*`r488-;39_PZ%sw%b;W^FH$4 z6F@`7!q8^St#jFzbce^9j%7ATbfABduBj%0Al2pS%!p$e`OQ}eLclj?AB1rtj!^71 zV-!_-1BRUn-ht4CS4i%IVLrtXS4@Ws0s_~zj+s==2EO(;#o6@Y36v@fv!=5h%(ET@;?L^@Ho?+<7DF^b^U8Z zZhI(rW0KxSzYImwmh9{eDIvNF$cL+T%Qu*3TQzD(dD6FX#bKRMG8hA3qDg%2WxCi$ zo6I))Bj{P^K8m%WMe;~eWOa!j$MYSo09Oq=yqPj8G6-@(gr)Tm!Bgs^ip36yUcb6xB>2lfTfM0kYLJS$R zm|xozG*QKUsQpf$`@2kzcB4B-v!kRF4W^m`C(6lqEvb%BJw;!(rNkZI9i){yrk zd?-IX$4ovR%|Op|fERMVz%ObM%Ud1N_b;D*iN==9yKkJFEBIl((K7N}f)#KJY#NGI zn;-iTbqVc1<(C4s&!-=vHM$=PC#&rtoCI>na~JLo7^f&Q+Lr#Qg^;-qHmC literal 0 HcmV?d00001 diff --git a/www/api/group__LMS__API.html b/www/api/group__LMS__API.html new file mode 100644 index 0000000..4c85d45 --- /dev/null +++ b/www/api/group__LMS__API.html @@ -0,0 +1,563 @@ + + +Light Media Scanner: User-API + + + + + +

User-API

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

lms_tlms_new (const char *db_path)
int lms_free (lms_t *lms)
lms_plugin_tlms_parser_add (lms_t *lms, const char *so_path)
lms_plugin_tlms_parser_find_and_add (lms_t *lms, const char *name)
int lms_parser_del (lms_t *lms, lms_plugin_t *handle)
int lms_is_processing (const lms_t *lms)
const char * lms_get_db_path (const lms_t *lms)
int lms_get_slave_timeout (const lms_t *lms)
void lms_set_slave_timeout (lms_t *lms, int ms)
unsigned int lms_get_commit_interval (const lms_t *lms)
void lms_set_commit_interval (lms_t *lms, unsigned int transactions)
int lms_charset_add (lms_t *lms, const char *charset)
int lms_charset_del (lms_t *lms, const char *charset)
+

Detailed Description

+Functions for library users.

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int lms_charset_add (lms_t lms,
const char *  charset 
)
+
+
+ +

+Register a new charset encoding to be used.

+All database text strings are in UTF-8, so one needs to register new encodings in order to convert to it.

+

Parameters:
+ + + +
lms previously allocated Light Media Scanner instance.
charset charset name as understood by iconv_open(3).
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 451 of file lightmediascanner.c. +

+References lms::cs_conv, and lms_charset_conv_add(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_charset_del (lms_t lms,
const char *  charset 
)
+
+
+ +

+Forget about registered charset encoding.

+All database text strings are in UTF-8, so one needs to register new encodings in order to convert to it.

+

Parameters:
+ + + +
lms previously allocated Light Media Scanner instance.
charset charset name as understood by iconv_open(3).
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 474 of file lightmediascanner.c. +

+References lms::cs_conv, and lms_charset_conv_del(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
int lms_free (lms_t lms  ) 
+
+
+ +

+Free existing Light Media Scanner instance.

+

Parameters:
+ + +
lms previously allocated Light Media Scanner instance.
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 157 of file lightmediascanner.c. +

+References lms::cs_conv, lms::db_path, lms::is_processing, lms_charset_conv_free(), lms::n_parsers, and lms::parsers. +

+Referenced by lms_create_slave(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
unsigned int lms_get_commit_interval (const lms_t lms  ) 
+
+
+ +

+Get the number of files served between database transactions.

+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.

+

Parameters:
+ + +
lms previously allocated Light Media Scanner instance.
+
+
Returns:
(unsigned int)-1 on error, value otherwise.
+ +

+Definition at line 404 of file lightmediascanner.c. +

+References lms::commit_interval. +

+

+ +

+
+ + + + + + + + + +
const char* lms_get_db_path (const lms_t lms  ) 
+
+
+ +

+Get the database path given at creation time.

+

Parameters:
+ + +
lms previously allocated Light Media Scanner instance.
+
+
Returns:
path to database.
+ +

+Definition at line 340 of file lightmediascanner.c. +

+References lms::db_path. +

+

+ +

+
+ + + + + + + + + +
int lms_get_slave_timeout (const lms_t lms  ) 
+
+
+ +

+Get the maximum amount of milliseconds the slave can take to serve one file.

+If a slave takes more than this amount of milliseconds, it will be killed and the scanner will continue with the next file.

+

Parameters:
+ + +
lms previously allocated Light Media Scanner instance.
+
+
Returns:
-1 on error or time in milliseconds otherwise.
+ +

+Definition at line 362 of file lightmediascanner.c. +

+References lms::slave_timeout. +

+

+ +

+
+ + + + + + + + + +
int lms_is_processing (const lms_t lms  ) 
+
+
+ +

+Checks if Light Media Scanner is being used in a processing operation lile lms_process() or lms_check().

+

Parameters:
+ + +
lms previously allocated Light Media Scanner instance.
+
+
Returns:
1 if it is processing, 0 if it's not, -1 on error.
+ +

+Definition at line 321 of file lightmediascanner.c. +

+References lms::is_processing. +

+

+ +

+
+ + + + + + + + + +
lms_t* lms_new (const char *  db_path  ) 
+
+
+ +

+Create new Light Media Scanner instance.

+

Parameters:
+ + +
db_path path to database file.
+
+
Returns:
allocated data on success or NULL on failure.
+ +

+Definition at line 119 of file lightmediascanner.c. +

+References lms::commit_interval, lms::cs_conv, lms::db_path, DEFAULT_COMMIT_INTERVAL, DEFAULT_SLAVE_TIMEOUT, lms_charset_conv_free(), lms_charset_conv_new(), and lms::slave_timeout. +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
lms_plugin_t* lms_parser_add (lms_t lms,
const char *  so_path 
)
+
+
+ +

+Add parser plugin given it's shared object path.

+

Parameters:
+ + + +
lms previously allocated Light Media Scanner instance.
so_path path to shared object (usable by dlopen(3)).
+
+
Returns:
On success the LMS handle to plugin is returned, NULL on error.
+ +

+Definition at line 190 of file lightmediascanner.c. +

+References lms::is_processing, lms::n_parsers, and lms::parsers. +

+Referenced by lms_parser_find_and_add(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_parser_del (lms_t lms,
lms_plugin_t handle 
)
+
+
+ +

+Delete previously added parser, making it unavailable for future operations.

+

Parameters:
+ + +
lms previously allocated Light Media Scanner instance.
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 289 of file lightmediascanner.c. +

+References lms::is_processing, lms_parser_del_int(), lms::n_parsers, lms::parsers, and parser::plugin. +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
lms_plugin_t* lms_parser_find_and_add (lms_t lms,
const char *  name 
)
+
+
+ +

+Add parser plugin given it's name.

+This will look at default plugin path by the file named name (plus the required shared object extension).

+

Parameters:
+ + + +
lms previously allocated Light Media Scanner instance.
name plugin name.
+
+
Returns:
On success the LMS handle to plugin is returned, NULL on error.
+ +

+Definition at line 235 of file lightmediascanner.c. +

+References lms_parser_add(), and parser::so_path. +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void lms_set_commit_interval (lms_t lms,
unsigned int  transactions 
)
+
+
+ +

+Set the number of files served between database transactions.

+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 transactions files are processed.

+

Parameters:
+ + + +
lms previously allocated Light Media Scanner instance.
transactions number of files (transactions) to process between commits.
+
+ +

+Definition at line 427 of file lightmediascanner.c. +

+References lms::commit_interval. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void lms_set_slave_timeout (lms_t lms,
int  ms 
)
+
+
+ +

+Set the maximum amount of milliseconds the slave can take to serve one file.

+If a slave takes more than this amount of milliseconds, it will be killed and the scanner will continue with the next file.

+

Parameters:
+ + + +
lms previously allocated Light Media Scanner instance.
ms time in milliseconds.
+
+ +

+Definition at line 382 of file lightmediascanner.c. +

+References lms::slave_timeout. +

+

+


Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.map b/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.map new file mode 100644 index 0000000..134eff5 --- /dev/null +++ b/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.map @@ -0,0 +1 @@ + diff --git a/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.md5 b/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.md5 new file mode 100644 index 0000000..cf7a723 --- /dev/null +++ b/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.md5 @@ -0,0 +1 @@ +741864e5ef35480d64dc8345e472b712 \ No newline at end of file diff --git a/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.png b/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..5513671216304210b29046822e0546c1a097c146 GIT binary patch literal 504 zcmVnaKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00EFmL_t(oh3%LDZo?o9 zMSFx0i35ZqEaDzT(ZByyW^5n?!rGxmi!>}D*D=Kp8v@Eh-BzZ@UlX)tu=UC9*)+PO zHD=#vrMSSh_K0n_DytUTbz85%Ds8SX` zL{IB&_bIs(idEHgEovGuVoeXeGd8bswqs2LTdHZ{JFw+>vs^yN>KB#Ol=lL);M-(p z6ma>w7m)b8`dMW)mDR73kM{!4#{Vzu1^qlb7l8I_clW(}X6b4UKl##K{~w*FgKe-4 uwhP(%z6!KP?HjEWcmHoSH diff --git a/www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.md5 b/www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.md5 new file mode 100644 index 0000000..1259953 --- /dev/null +++ b/www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.md5 @@ -0,0 +1 @@ +ebac3ba08ff3018fd396ac6b1eaa0c0f \ No newline at end of file diff --git a/www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.png b/www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..5d939ac37cf99882009eed28232d0af9db692a91 GIT binary patch literal 491 zcmVnaKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00DzZL_t(oh3%LNZo?o9 zhI@oki35ZqwBjC%qW}I^8Gi6+GVdY;yRoJ&BUp(Q~WqdHoIl+^Mx0$F+)Gav*c zR!SU4NKW+O=;>;ffDn*aDRCSjIZ;Noq>@?KuQ`xBmVrFs@p_m|hy?>hI}`%qTMrMl zgvaY)HYNg4v<5^th(IhxRx1Nd)gCIEnsE?;Sd6Sz1{#f72Z|+Qtso>?vJB*ZR%kHq zK(S=36@)}fmVv4zld?eiS5;6aO)Xorsh9sVmItGh1=7D#tLUVuWs5d7ZJ|FPS1MF| zu!Uq{9_jGheRU|%av#dWGe-5RW9v{la+mErlvaVZ>>pgN9jF5}1$5>+Z!P7CTxHre he{5*UI?$HgzX3))mm(q~R|5b5002ovPDHLkV1kTA&QAaU literal 0 HcmV?d00001 diff --git a/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.map b/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.map new file mode 100644 index 0000000..b0ba168 --- /dev/null +++ b/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.map @@ -0,0 +1 @@ + diff --git a/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.md5 b/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.md5 new file mode 100644 index 0000000..b1ef7bf --- /dev/null +++ b/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.md5 @@ -0,0 +1 @@ +37edee99cb66d3d72d36c490a30bcf2e \ No newline at end of file diff --git a/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.png b/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..3d397b9eb22ff7049cf49478ac1a59cf639248e4 GIT binary patch literal 490 zcmVnaKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00DwYL_t(oh3%Maj)Wi# zhUW_W-~e(3!$BPL-v267TI5T>4OwSRmS#xBDm=Wk>iAMmw%1<+bZyd&+w17&?a(bM$*jZJN&+R@;kt`4CGU)p zwWP~4>*+#fvsjI8Q7Wg)GwbO>W{X&x&Pu+d4#Xvy<*K0OV|$}2B#O}a_<9lGH!3H4D2hpUYL g{I5LEwMjQ_AADEYK`7w{2LJ#707*qoM6N<$g0ykt>Hq)$ literal 0 HcmV?d00001 diff --git a/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.map b/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.map new file mode 100644 index 0000000..7fe6153 --- /dev/null +++ b/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.map @@ -0,0 +1 @@ + diff --git a/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.md5 b/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.md5 new file mode 100644 index 0000000..13253d4 --- /dev/null +++ b/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.md5 @@ -0,0 +1 @@ +ba12f4bd6c9bfde5afd2da8e3efd1c1b \ No newline at end of file diff --git a/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.png b/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..81d9b72a7008e660dd2e17a1a25fe13b7ea71106 GIT binary patch literal 514 zcmV+d0{#7oP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00EjwL_t(oh3%LNZo?o9 zhI@pj5(g+(h&Tv~eE+M=4-6s1ZI+>}t#B2&CQkVJJ3N}p^zwGS{5QdK8;pJIT^Jp7 zHmkE!9YtZB`&uv=&!{*U2jgHIjGxSSyZ2!Xa0~#`G_$@UN5REusur7@_nFa|%TQ~W z>M9+NF+x~QG5W0IA21r^QAN z4I`5XBNMZ7xJ63sGt3*t0I-R`DS@RUDIF(eWMVEX_LJJBagUJ*1ttqvG&LBZ(vc#A zv5Xn+Szxk&Mbo6BrQ@nEQj{5Ut$)WzGvu04YfXwWW2Sn*2vRc{0#amkJT4Ya$(5%} z;D=)y?Twk$9M1K`4<|{H)$y2#oHC`GSo?5gYzzR}%r-i@7Aj+7)!z+!Ej%_^?%Pk+ z>*tf@*i#I~!T7O^XI^nUGL!Ml&EngE(F<)9{>OV07*qoM6N<$ Ef`d)oM*si- literal 0 HcmV?d00001 diff --git a/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.map b/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.map new file mode 100644 index 0000000..3ce52c7 --- /dev/null +++ b/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.map @@ -0,0 +1,2 @@ + + diff --git a/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.md5 b/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.md5 new file mode 100644 index 0000000..f211b3c --- /dev/null +++ b/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.md5 @@ -0,0 +1 @@ +8ca1d52d09150968d48d612cb14964f6 \ No newline at end of file diff --git a/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.png b/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..98ce4bc804e76c0b3e935de85baaf22cac7e6ede GIT binary patch literal 740 zcmVnaKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00MkTL_t(&f$f6V zB=fn;vwSBp>Lga3#Hy26fk-^n(eeo-YKM{dnLi{wZah)Z@N1I) zl1+Plj&S6}#s^U(JRHS;kiv`yH_~X&rxVMA35|Q)2a;rOPJEN30Dr7)C6PICatbUu z!DSjddvo!7&Xd&^;!%QvNoc8`(N&94^StuIze*3e+~)j1}5>lwrE=}!>LVssRW~E`m?o+m4tFVEmeAQX)C)e>s?hb2uhN@ z$@oqRgIaN{Y!yj36G)OuMvva2FXt?Y7E)7X>~y86BzcUElH};rwvvPoVo1DJXeCD} zRo7Bmm$IKMn6QI#OfE$ Wu6Ipxb_Qht0000 diff --git a/www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.md5 b/www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.md5 new file mode 100644 index 0000000..c8ca71a --- /dev/null +++ b/www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.md5 @@ -0,0 +1 @@ +1c8005cea026be0e838fc5c01fe19dc0 \ No newline at end of file diff --git a/www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.png b/www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..cffbc70ab66f4b36e46883930ed4e6a09d4f0751 GIT binary patch literal 462 zcmV;<0WtoGP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00Cx6L_t(oh3%JtZNwl9 zMQ;TvF+dohQ3i=lfB#j^HZ}ngN~E?b>R~1F84GyW4sZ`Qiah=rAju>-%UC2HU1@di z_q-`evi4+ak?cPd5I;#K$s~DSl8@#0NboG?Mu#LUiNx1iu)hzeeG8JUAVFbXk%V9* zu20frL-c$_(#sB!P*}cCqW+460|6KbAl62zK@t`t@jJbU%fn7bYNqIzq{n<}`8~qH ziH{mf5)g~ThNs6W7OC|!G-NRn8V+%R;E3}yqSW$+oHrU8S!CBFmKMmfQCzsO9}`)o z#arfvlmNYF-$5cVk$Xu+q5ucUGujQ3qhe*?G%#M{Py*B+HH@f>~fm;$XBZHrv^NIGfa{s4P3N99{BB#R@z3QAyI4Cdnk3BqRMB9YZF`S;irG0qMR>*ihHeO8@`>07*qoM6N<$ Ef~4HX8vp + +Light Media Scanner: Charset Conversion + + + + + +

Charset Conversion

+ + + + + + + + + + + + + + + + + +

Typedefs

typedef lms_charset_conv lms_charset_conv_t

Functions

API lms_charset_conv_tlms_charset_conv_new (void) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT
API void lms_charset_conv_free (lms_charset_conv_t *lcc) GNUC_NON_NULL(1)
API int lms_charset_conv_add (lms_charset_conv_t *lcc, const char *charset) GNUC_NON_NULL(1
API int API int lms_charset_conv_del (lms_charset_conv_t *lcc, const char *charset) GNUC_NON_NULL(1
API int API int API int lms_charset_conv (lms_charset_conv_t *lcc, char **p_str, unsigned int *p_len) GNUC_NON_NULL(1
API int API int API int API
+int 
lms_charset_conv_check (lms_charset_conv_t *lcc, const char *str, unsigned int len) GNUC_NON_NULL(1
+

Detailed Description

+Utilities to convert strings to UTF-8, the charset used in database.

Typedef Documentation

+ +
+
+ + + + +
typedef struct lms_charset_conv lms_charset_conv_t
+
+
+ +

+ +

+Definition at line 72 of file lightmediascanner_charset_conv.h. +

+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
API int API int API int lms_charset_conv (lms_charset_conv_t lcc,
char **  p_str,
unsigned int *  p_len 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
API int lms_charset_conv_add (lms_charset_conv_t lcc,
const char *  charset 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
API int API int API int API int lms_charset_conv_check (lms_charset_conv_t lcc,
const char *  str,
unsigned int  len 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
API int API int lms_charset_conv_del (lms_charset_conv_t lcc,
const char *  charset 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
API void lms_charset_conv_free (lms_charset_conv_t lcc  ) 
+
+
+ +

+Free existing charset conversion tool.

+

Parameters:
+ + +
lcc existing Light Media Scanner charset conversion.
+
+ +

+Definition at line 67 of file lightmediascanner_charset_conv.c. +

+Referenced by lms_free(), and lms_new(). +

+

+ +

+
+ + + + + + + + + +
API lms_charset_conv_t* lms_charset_conv_new (void   ) 
+
+
+ +

+Create a new charset conversion tool.

+Conversion tool will try to convert provided strings to UTF-8, just need to register known charsets with lms_charset_conv_add() and then call lms_charset_conv().

+

Returns:
newly allocated conversion tool or NULL on error.
+ +

+Definition at line 26 of file lightmediascanner_charset_conv.c. +

+Referenced by lms_new(). +

+

+


Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/group__LMS__DB.html b/www/api/group__LMS__DB.html new file mode 100644 index 0000000..c4f20f4 --- /dev/null +++ b/www/api/group__LMS__DB.html @@ -0,0 +1,727 @@ + + +Light Media Scanner: DataBase-API + + + + + +

DataBase-API

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  lms_gps_info
struct  lms_image_info
struct  lms_audio_info
struct  lms_video_info
struct  lms_playlist_info

Typedefs

typedef lms_db_image lms_db_image_t
typedef lms_db_audio lms_db_audio_t
typedef lms_db_video lms_db_video_t
typedef lms_db_playlist lms_db_playlist_t

Functions

API lms_db_image_tlms_db_image_new (sqlite3 *db) GNUC_NON_NULL(1)
API int lms_db_image_start (lms_db_image_t *ldi) GNUC_NON_NULL(1)
API int lms_db_image_free (lms_db_image_t *ldi) GNUC_NON_NULL(1)
API int lms_db_image_add (lms_db_image_t *ldi, struct lms_image_info *info) GNUC_NON_NULL(1
API lms_db_audio_tlms_db_audio_new (sqlite3 *db) GNUC_NON_NULL(1)
API int lms_db_audio_start (lms_db_audio_t *lda) GNUC_NON_NULL(1)
API int lms_db_audio_free (lms_db_audio_t *lda) GNUC_NON_NULL(1)
API int lms_db_audio_add (lms_db_audio_t *lda, struct lms_audio_info *info) GNUC_NON_NULL(1
API lms_db_video_tlms_db_video_new (sqlite3 *db) GNUC_NON_NULL(1)
API int lms_db_video_start (lms_db_video_t *ldv) GNUC_NON_NULL(1)
API int lms_db_video_free (lms_db_video_t *ldv) GNUC_NON_NULL(1)
API int lms_db_video_add (lms_db_video_t *ldv, struct lms_video_info *info) GNUC_NON_NULL(1
API lms_db_playlist_tlms_db_playlist_new (sqlite3 *db) GNUC_NON_NULL(1)
API int lms_db_playlist_start (lms_db_playlist_t *ldp) GNUC_NON_NULL(1)
API int lms_db_playlist_free (lms_db_playlist_t *ldp) GNUC_NON_NULL(1)
API int lms_db_playlist_add (lms_db_playlist_t *ldp, struct lms_playlist_info *info) GNUC_NON_NULL(1
+

Detailed Description

+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.

Typedef Documentation

+ +
+
+ + + + +
typedef struct lms_db_audio lms_db_audio_t
+
+
+ +

+ +

+Definition at line 97 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
typedef struct lms_db_image lms_db_image_t
+
+
+ +

+ +

+Definition at line 78 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
typedef struct lms_db_playlist lms_db_playlist_t
+
+
+ +

+ +

+Definition at line 125 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
typedef struct lms_db_video lms_db_video_t
+
+
+ +

+ +

+Definition at line 111 of file lightmediascanner_db.h. +

+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
API int lms_db_audio_add (lms_db_audio_t lda,
struct lms_audio_info info 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
API int lms_db_audio_free (lms_db_audio_t lda  ) 
+
+
+ +

+Free audio DB access tool.

+Unreference and possible free resources allocated to access tool.

+This is usually called from plugin's finish() callback.

+

Parameters:
+ + +
lda handle returned by lms_db_audio_new().
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 352 of file lightmediascanner_db_audio.c. +

+References lms_db_cache_del(), and lms_db_finalize_stmt(). +

+Referenced by lms_db_audio_new(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
API lms_db_audio_t* lms_db_audio_new (sqlite3 *  db  ) 
+
+
+ +

+Create audio DB access tool.

+Creates or get a reference to tools to access 'audios' table in an optimized and easy way.

+This is usually called from plugin's setup() callback with the db got from ctxt.

+

Parameters:
+ + +
db database connection.
+
+
Returns:
DB access tool handle.
+ +

+Definition at line 247 of file lightmediascanner_db_audio.c. +

+References lms_db_audio_free(), lms_db_cache_add(), and lms_db_cache_get(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
API int lms_db_audio_start (lms_db_audio_t lda  ) 
+
+
+ +

+Start audio DB access tool.

+Compile SQL statements and other initialization functions.

+This is usually called from plugin's start() callback.

+

Parameters:
+ + +
lda handle returned by lms_db_audio_new().
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 291 of file lightmediascanner_db_audio.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
API int lms_db_image_add (lms_db_image_t ldi,
struct lms_image_info info 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
API int lms_db_image_free (lms_db_image_t ldi  ) 
+
+
+ +

+Free image DB access tool.

+Unreference and possible free resources allocated to access tool.

+This is usually called from plugin's finish() callback.

+

Parameters:
+ + +
ldi handle returned by lms_db_image_new().
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 173 of file lightmediascanner_db_image.c. +

+References lms_db_cache_del(), and lms_db_finalize_stmt(). +

+Referenced by lms_db_image_new(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
API lms_db_image_t* lms_db_image_new (sqlite3 *  db  ) 
+
+
+ +

+Create image DB access tool.

+Creates or get a reference to tools to access 'images' table in an optimized and easy way.

+This is usually called from plugin's setup() callback with the db got from ctxt.

+

Parameters:
+ + +
db database connection.
+
+
Returns:
DB access tool handle.
+ +

+Definition at line 97 of file lightmediascanner_db_image.c. +

+References lms_db_cache_add(), lms_db_cache_get(), and lms_db_image_free(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
API int lms_db_image_start (lms_db_image_t ldi  ) 
+
+
+ +

+Start image DB access tool.

+Compile SQL statements and other initialization functions.

+This is usually called from plugin's start() callback.

+

Parameters:
+ + +
ldi handle returned by lms_db_image_new().
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 141 of file lightmediascanner_db_image.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
API int lms_db_playlist_add (lms_db_playlist_t ldp,
struct lms_playlist_info info 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
API int lms_db_playlist_free (lms_db_playlist_t ldp  ) 
+
+
+ +

+Free playlist DB access tool.

+Unreference and possible free resources allocated to access tool.

+This is usually called from plugin's finish() callback.

+

Parameters:
+ + +
ldp handle returned by lms_db_playlist_new().
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 165 of file lightmediascanner_db_playlist.c. +

+References lms_db_cache_del(), and lms_db_finalize_stmt(). +

+Referenced by lms_db_playlist_new(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
API lms_db_playlist_t* lms_db_playlist_new (sqlite3 *  db  ) 
+
+
+ +

+Create playlist DB access tool.

+Creates or get a reference to tools to access 'playlists' table in an optimized and easy way.

+This is usually called from plugin's setup() callback with the db got from ctxt.

+

Parameters:
+ + +
db database connection.
+
+
Returns:
DB access tool handle.
+ +

+Definition at line 91 of file lightmediascanner_db_playlist.c. +

+References lms_db_cache_add(), lms_db_cache_get(), and lms_db_playlist_free(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
API int lms_db_playlist_start (lms_db_playlist_t ldp  ) 
+
+
+ +

+Start playlist DB access tool.

+Compile SQL statements and other initialization functions.

+This is usually called from plugin's start() callback.

+

Parameters:
+ + +
ldp handle returned by lms_db_playlist_new().
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 135 of file lightmediascanner_db_playlist.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
API int lms_db_video_add (lms_db_video_t ldv,
struct lms_video_info info 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
API int lms_db_video_free (lms_db_video_t ldv  ) 
+
+
+ +

+Free video DB access tool.

+Unreference and possible free resources allocated to access tool.

+This is usually called from plugin's finish() callback.

+

Parameters:
+ + +
ldv handle returned by lms_db_video_new().
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 177 of file lightmediascanner_db_video.c. +

+References lms_db_cache_del(), and lms_db_finalize_stmt(). +

+Referenced by lms_db_video_new(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
API lms_db_video_t* lms_db_video_new (sqlite3 *  db  ) 
+
+
+ +

+Create video DB access tool.

+Creates or get a reference to tools to access 'videos' table in an optimized and easy way.

+This is usually called from plugin's setup() callback with the db got from ctxt.

+

Parameters:
+ + +
db database connection.
+
+
Returns:
DB access tool handle.
+ +

+Definition at line 104 of file lightmediascanner_db_video.c. +

+References lms_db_cache_add(), lms_db_cache_get(), and lms_db_video_free(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
API int lms_db_video_start (lms_db_video_t ldv  ) 
+
+
+ +

+Start video DB access tool.

+Compile SQL statements and other initialization functions.

+This is usually called from plugin's start() callback.

+

Parameters:
+ + +
ldv handle returned by lms_db_video_new().
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 148 of file lightmediascanner_db_video.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+


Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.map b/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.map new file mode 100644 index 0000000..59402f2 --- /dev/null +++ b/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.md5 b/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.md5 new file mode 100644 index 0000000..e90694c --- /dev/null +++ b/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.md5 @@ -0,0 +1 @@ +eb02e47b6c3da31a0c666fdb72746f9c \ No newline at end of file diff --git a/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.png b/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..67851d3682a9b79c1a7a243326b2b595bf9a65db GIT binary patch literal 1549 zcmV+o2J-odP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00pH&t+0)I0o1-~dRaOs|FC3cE9)&J7RvH6#u> zv2bzV-B0sAavO2*ZoHRr6AK-=b)7-K;gGdM-4?uysG&^o?uISiVoTG{8-cgjn-hNa zpT}dSJErH;(36u|e1B&Su31XYd$JbKRLmWvin0c8-#hR&s!m54gHQG?p?tw(p4A(a zFL+$(pene4^ogZ|s^9|B=10)$-=8}lmZx7A*|;U&;=90|R~Om1l?Ax->aw($Qh={| z{mCPyjeQS^%`gX`oWZ(;l7RcX{!KIaK&_j&q4^K%AJrb;8KY8xzj^%|x*KzFY;p1( zdYy)hN@MC?ufM0o2k`!PVM|X2{>kg_0l$E$!@AdB)2|v}^7>Q9eu>U)l-l9-e=p6g zI%E})KCyIA6T7 z{9C+dW^Hg=Tkhca&}D7#hHhfs;C2Cn#Dr(o-~(?fFwvVc_-Nm(qid@`ScU@EJ8yr;D8pTjc9JKc~+djf~Shiem9!INNz!ZI9i zm|EQF>8bC7h7CLsb|@^v3vQ!RY)+Gx4P3e_cN7ZCa9+a*B%s5X6T3SmaQUv>(cZ8O zZ%&@aSxW4ThO7y#9F+@r+U9O@0Z-PKPs#wiJpr2)TpjXz|Bn9hwb~C=J4z=2e?;lI zR{PqeZ_`@o`+~cjGZDiho*KX~8h+J}`T`193&1M)oq`hS!T5B!3c zc{fm^d9Ba+?7!B)yB}>ac5TRHH!?{K-opX4JeU@@ZEWrbotb-siRLgQ{_R%uGk|a2 zkjahLNDXdb9dNoE9&mt-Exvg}CO2LqDL8Vx=HPDQE?OM#)Eam&G-Gu`rgOmGO#K5m ztb?0_3%+YZrnKPJa!r?o{TOy`0Jc}d1D!cJAFpR<00a9sWJ=w+P0uHQ;mHNyd2}xl zw+>lVcA*({tX{z@cm=QE75oa|hg|Z%W5mT;-G{0jl>q#plCFbbSJX7|In$*)id`5W zyAze5%3BJ;r1BR3Fo|UmZ;9O;)9U5&?451dc4_2%>(vW0cgBVKWtlr`ghEN<8RpQ8 za_qglm=q?J7lp(mk+`!G(1k-RB`W8UY*1~+W-lE^oo!bq9yl*neWXg-DuGocZH~dJ z1lyqq{s$3C0G=ngB)E#%@<{HoNYda(-{C9)7@s5xep1;@s^9{u;EBs_QUw=K1y5Xd zlPb7?0=qIfNo!>Vm7v9sfI|hBQWEezu^HMfbe6j;QX25xe=PedEx!AYWnTq+b8H5! z+rQ9ze0yxhxE+(+b)n?JVP|YcW4B`xR?3l^3dd$l@n>?EMapf+I^2-kfpe7IqzW#e z3ZA&^CRK0&-4{G2GDGgNNTQR5Ije%-P2c|kas6Hlk*%D300000NkvXXu0mjf$6@RC literal 0 HcmV?d00001 diff --git a/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.map b/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.map new file mode 100644 index 0000000..ed03201 --- /dev/null +++ b/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.map @@ -0,0 +1,2 @@ + + diff --git a/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.md5 b/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.md5 new file mode 100644 index 0000000..9de84ff --- /dev/null +++ b/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.md5 @@ -0,0 +1 @@ +075f37f351138796cb2745deda6fbe82 \ No newline at end of file diff --git a/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.png b/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..d3bcc0f89394bb033123b0eecb78d7252d4f44aa GIT binary patch literal 738 zcmV<80v-K{P)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00MeRL_t(&f$f=DZp0uA zhI@oki33cI&?pB%(SQG|6fdlS%w%|ItKc?b0LS>lW@+cc+*Uq6e%piJlgWNhxjnnZ znDmT~+I?bv%&JrNbx5`@`&e9_S#d*VC;Mcd?2~=6Pxi@vjs5F!?)4=(T2b?E$ZWxm zy(HR^S4iP?_GL+4qx8|b_C*Z`&G16Q{6oCYlt7lB;1*J_Z&%qveLIZm*_Y^b)p^2R zYN{Gq>}`HOeN03AUp?!O%u336 zss%nBK~-X{$F7;&W~XG3Mw%c{_-R7gIiJTJh)J2Tn+CgtnLSnZPR@t83vI^EX_aQz zgqgPpwKhBPpkk*i4{=}DG&!Q%XV3OJ31WxclyNudB?*6rJ?wRiRm9zxiai@BZX-T5 z4(!LA&)LhI=bEsic8(GnuOA*QLai#?WVF(c8vem)&i6Y0Jvt zDPWswMUPD@Q=mDoecp2OUI)bE3)PLM)%fzAHvRv}7AHd)*|P7YJ8k1uqwM_={>Xj) z{6h8~J4ugS-~JQq=km|~mU-s&C7J9^??+^^PxiaAkA1uIufLPJsZ92J%B|Ud0LSM= Uf#eklGXMYp07*qoM6N<$f~Tu=)c^nh literal 0 HcmV?d00001 diff --git a/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.map b/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.map new file mode 100644 index 0000000..235482b --- /dev/null +++ b/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.md5 b/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.md5 new file mode 100644 index 0000000..bc848e7 --- /dev/null +++ b/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.md5 @@ -0,0 +1 @@ +959c572e318a9c938cc52001b61635f9 \ No newline at end of file diff --git a/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.png b/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..faebe0b3d16df92d1b6a54be9b3979ebc81b3795 GIT binary patch literal 1714 zcmV;j22J^iP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00v4)L_t(|ob8ZQx#YA>7LQ-^vTN`6Z+?4W9;TYbGB8Nqho?U`)T%r_0y7Z{Y1B1cZPP zXiq>xku<-*4g}tq`Zpp3gn$qb0zyCt2mv9`ivXB3(Civ}+U)mXA_5!zgurJK0Q*mh z0~nxkp#cNem8Mk)q>$$K*OLIO4Dd0m28EDTr^YW(L)&sd$c3xxSMsD zT>R_zCn+Vc3|arjQbu6t?9cL5;s*0C7y+JK;`HeuH@=_=fxqQ)e{zWuElSeeNMKcgw0vM;pqdZ^@fcNnfK>(V*`|T3 zIM!G?^SI&`5s>>>aHG-Q;YQJ>O1yBedem>~Bf4`f@32IN;3(z`t>UPL&-Si?cT3!- zZ6QClij$_{<1p5fOPtWclR1(0Rgo_vAs_^Vz~BTbSYrk!P~qHVROB2 zCGu|5u_;emK7Qb>3`}|28e>S_XhJvTX$K!gW6IMGK9b6mryYDWoheT{_=rkVo_6q2 zwZ<-9w8n5po#9A>kE}MhJVQV?BG8+G!R56G^lcs(T)t+Fp(%h`66pC_Ft|KpjcH1t zBLjoWGuD{K1bk0rL!%5YL7u`!u9o3I4f85{#v5Ew9uw0 zxHnGQnn1l%q$P>JJWgYUE-fNei@>rkM)ew+0}yEZp?Q4*t-ms_PoVW2jY2>O2!SpH zo|!bFWA+W5# zX)uZo=8gu^jliKvgSxJn0C)Sku76NzM{f)1Ng!j=AOcK>>j8*M!5Rhog4?+q^(zHg zlLit9UHJUlHd_L56;WM!64;jlst2gEKP?4RPdEa@mjXC2X`srk;=`Oyd$u9K#l{kt zp(YIbiAf`Qu5b`@j;oGWikK(yGX1~b-PXn zA)ve$v+~xG5?g_n9yX&2H|d44LIsPNzrP-K!^*N$v6?y=kw6{Gxsx#o)EGVCWM~2( zTngN)(Ns9qs07OAx^glo0Txr?9713M0*B@(4RNQ--Wof!oJZ!KaXg9Bq;XUJH(l2XkGXsIFIf_a?JKFeC5O>*=tp+9`uro(_(@SiM zzzE<>5fc%}nWG{CsX@-w4{Wbfvk=&of-C_y-Sj`3yAs__)2bhlSy;`xLg8%>k07*qo IM6N<$f;0dHR{#J2 literal 0 HcmV?d00001 diff --git a/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.map b/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.map new file mode 100644 index 0000000..ed03201 --- /dev/null +++ b/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.map @@ -0,0 +1,2 @@ + + diff --git a/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.md5 b/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.md5 new file mode 100644 index 0000000..acc7761 --- /dev/null +++ b/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.md5 @@ -0,0 +1 @@ +8d4f3544e83994d5316abfe3c1bcc1b1 \ No newline at end of file diff --git a/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.png b/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc557c08e7865283faa3fbd2d4d783e4a6ed3eb GIT binary patch literal 727 zcmV;|0x127P)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00M7GL_t(&f$f>?ZNwl9 zhC4#3!~mBOS}_QU-u+i8#^y67xhp@~D!7VrV8{5u4sg9Ub6a_T`|SvRPZs+<<@W3r zb24&1>-WO_oL4XGUsK|S>~nd!^5Uo5F80N~*cba^U+jzhHTI9kdDJh-(TlkEQ*Ik} z>@CrbjuD~nN%n0kQKOB~di|h=gJpU^asS}xD>vss8vSuIGe7FH7vzMA@OB}Z@*+PA`L}7308eHl;LT1N--O=hsMBvhoYn|iki*MYL zPFnU-&G$QVeYT+*ZY>T? + + + + diff --git a/www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.md5 b/www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.md5 new file mode 100644 index 0000000..78a6860 --- /dev/null +++ b/www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.md5 @@ -0,0 +1 @@ +fbd6dc8be19d98f81704a2748ad68f34 \ No newline at end of file diff --git a/www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.png b/www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..c9374ddb033b0e45a0b3d825b98b72494a7d7269 GIT binary patch literal 1665 zcmV-{27dX8P)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00tRJL_t(|ob8W^n@cyTwrRKq{0eQt zuga-y`a1BSU&sug08a!7CiA_Kxbc~o!`iln@bJbr{i`=1%yBRqlL|70PhAL}*dlne z1Ik3pkZ?VCO^R?4Jf`dhGp`7rGaQUt_g_(!4g z%`5>Z+4o19@DqN*PxuKx;V1ktc$&~E0Vvt`M+)HK6#+e8K=0tOr$jU9s^5GfS4%8l z9a|toY7s`F*18JdpS9sNK7Mip9{PaaSE8A?9_6M8BvPO7pkK%g@B%y$o?s5d^PPg% z>xr5Avv)~Av$$tu)C9nXp(wimyD>bx@r?!O4Us)GxJHH`6QWe2 znX8_cwCr4n)zW(rt+^L|J%0P12MfG~f8v1waPZnV{tbU~=e&lOHsLubssuB!uWiIh zdw9(P33y7mV}m{ac+jE9zzaX%8C;}~;Xy#KF`uJ_oB^LUdrTSJ*zErSZ%%jo1QNj| z!ddv*>@n;rF)H%GTPxPRYhEw3^%o5UPm`&~y`bdt@yfvm7de0dQ$CJFx`-2jZ$%V_ zVn#uE(o7EZCmj)=Z><7W*F!0I((03742RU}QgGpS+kNZnv&&n^eD&v>c>us2lmq*I zruoBW!cX`KKL)%k@rMi#Ur;mcTjZ{~TYpu)nI+xR2L7(Bat zKgmts3H&+u-N2uL-w}NKMTlL&w;uTEUL>E*iqk||c!gI@Ep4BA?+CnPfp2;0_Xpn) z-@$+455e2hu)#OO_wXP4Lm1&34g3-OXZ{dY`1i=iQfs8Z?0@PHv3KBNhWGSr5tR}A zPyHbc%wEfdlhz*q@W9gTH9z!+L=NBvfyCA6(eb^$!jt>{5MLHI>>=a~_YOe+Z)cac zTk+gH0GB;<56^SI5L)z6P(velhMQ*Ghw1sHYS-fuFZ??Ud>wlG#es`Hx`&rgc6%u0 zY6_1aPMG%(U%0=bZ9Hn=PX}4x4&lDSGpYc;YzNG0SInKm^F}Q84bS}Juy1%(qY-&c zcs5P=0;w8}$g2f>_IV!3dt8R4RjNQewSdn)(jo;PJ@7&$3RKjo@X1}m!YWg!k{ZEh zp6B5l4j5fQg{5;iD9*;UgHJurgXY{t{9pqR@sum0+QDz1=V2WV^aKxjo(Ims16WT3 zqguhIp63zFxw~WI;LSV5*|?VQX|uN$P7k#S;ICo!GWR?Wunq?sT_MryhJLn-40vAN zaS)%-)+*MxajLpHxxCHX&|KAONLro1XQXO0BCiS0ra6;SAhntDuj=ma9A3D%R8rLy zFa5)7`RQwNSd`4!`^kH5k4>3WP#2y7<*q8}3 z@VD>n`P+96c)~94`%-w+gfFjTWcX}|iG49PSJH(4R{j19`Nffqnl~Om00000 LNkvXXu0mjfG5|QS literal 0 HcmV?d00001 diff --git a/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.map b/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.map new file mode 100644 index 0000000..8623e5b --- /dev/null +++ b/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.map @@ -0,0 +1,2 @@ + + diff --git a/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.md5 b/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.md5 new file mode 100644 index 0000000..4e438bb --- /dev/null +++ b/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.md5 @@ -0,0 +1 @@ +42ec26c4b56e9b61bc35de5035cbba4e \ No newline at end of file diff --git a/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.png b/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..ac9f66d98483767d7986352c22ef7e8e6dc19339 GIT binary patch literal 812 zcmV+{1JnG8P)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00P8GL_t(&f$f?Lj^iK< zhUW-FB@Pgduo3szDDwTUvS4E#f^K((A&kVYMl_C7zStotk1w^nzQ3L(_^iz+qs{1~ zp+mD6`_J8sYBNe{GsrSYd&Cr4c}+e-rq^Q)xCv&(Vy=9L$(0){NlQS%qz8FT z#*~E4)Dgi#GK^hMm?@0Eh7!u&kDGBb$}w6fYX*Ak^Jg)KW0xhx(@_nHRdps(Nzl+BJf-kN#uhQuYisIO2VEiW;2Ei*NnvP zT{w;>UDV__dMbN27-`SOOJK$uPn*ry&NZj?WFs@q&9%!J#|m(>m|)9?W|a9KetfLvaYp;9I$WZ?2eDkgilH6RPMGNZ zn8F$Q|2=(c)+Ibn5yRO(juLeZ8Iy8&{o_$lV;Cuno#T2@qZkFoN2A6v9?Qp3E!}23 zBNj_D25m+eeORa94y2iN4b@CMX$s@JH30rgcC5wd4G%LG_ExWGCS!Y@!iDJuTCRYz z+hHc2J#k9*f=P_cbqbK?-mz3+W<7bjFYf=&?^%rXIt5P>7%`S?(IL)cn8(;!r;r$F z)}N5FwhpwXr!m&KZZd|I6^e5WQyBHzbqZH@%&$q&R3uN|isr;I3I4uLq3OBbg_}`I qn^8uaQAWMvAE?2MLfVWn`u+p7*>}?4Fg-Z{0000 + diff --git a/www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.md5 b/www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.md5 new file mode 100644 index 0000000..2b3ca44 --- /dev/null +++ b/www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.md5 @@ -0,0 +1 @@ +931cc66356963e2fccc1aeb2eb6ece33 \ No newline at end of file diff --git a/www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.png b/www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..7f6855faef3acab40912a4e4bc80526038503242 GIT binary patch literal 742 zcmVnaKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00MqVL_t(&f$f=zZNo4O zMLR+jKm$Z81m2^9@%LY);-On|lDa@qSOg5)I%q!en^xKnb6xxV`0EJ%&=&kvZNXcd zG(Yiv+OgOy_>=Ax{&CW#@TU^<)XO>dcEKkw0^v0LpL%-+1jmiAE$eE@w!#;+q>|&y${+scaPE8y7vIS z9;w4Hgmx7Zl25KsM28-{lY9&|`tVXO|f;KtAwexZar9%)mb&3!}o=$_|7=E@bhV0d<+ zPpMAaXTNHA1bkKiouIiTMnXo>h)2AjMmMtr4`?#z1j&!E`Pe7$xsOFm@!k&IM~7MV zJQqb@dS<$tz$RzU=n@ z=oiohG5XSp>|-F-4|jO_Uh9hF_NWRp`=Ljd8nsri`A<@|`asmVwav%lmF?}|>#6X= z0Sy1<_7;;*e--O1VYlOE4vxJX!`FWM0qcj&f?x0pe!*V}{@lNP{`bGDu4)VZs&;Mo YZ#Zm6AHTN0*Z=?k07*qoM6N<$f-i1v?*IS* literal 0 HcmV?d00001 diff --git a/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.map b/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.map new file mode 100644 index 0000000..b4cf9be --- /dev/null +++ b/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.map @@ -0,0 +1,2 @@ + + diff --git a/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.md5 b/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.md5 new file mode 100644 index 0000000..63f4440 --- /dev/null +++ b/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.md5 @@ -0,0 +1 @@ +1616d5ebff70eb7e63ec28d516875096 \ No newline at end of file diff --git a/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.png b/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..68ebaec42695283c726f321437c88d8a5aa212d1 GIT binary patch literal 830 zcmV-E1Ht@>P)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00P!YL_t(&f$f_OZtEZn zfOmx=ae(CrugXDC)1Rsv&$`YIlK?)7A;cp22BoqnKzYp=tV*w8k z|5(q;m;fiN45%DV82bgb6rc^sPMpwLtpvKJ@q|8|WEi$+U?q>Yh!8FyL?#K+iVz-9 zB#H2G#eL}8UWUuOycC20)V;?Lps%Oc0FD$&=#!MGWM{%<*$K1cehKCzl~PJ}BwRjk z{j0Z-d&j<&A5OwaXh8^D-SGzH2^J`` zbLnw}>;DiIx%VJsvsJklcsX_o_+=1)4cL=_pY6HEjQF>*a%BacwMO&(2q7|(c`yOC z8YYo^(lhax{VvyN3fIdNSFNc?&|!?#g#2JbSq$ zT#q&!>E+}?3J8!$K_xnw4<%CQj0wj^O7U2M^k7-x@EmU_=da!*yaVAM7-PHRG|Fxk zWkiV0R7*6rQ!BgsFq=|l^P0KxF1Bk9$&>~wB1wFQl_h7gs+6P$q0P!%l0JkMtD8x> z65iO$>CqDmn(9T!{tX6Abs`iA25n5j$2U6&FeB&TY^*g_A7R5+gm{qi`2FZX;9|l` z-JFdLBYd%gfE?{*BLTjBmiOeTB)%TS3mQS#+(E#1o@^x8y + diff --git a/www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.md5 b/www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.md5 new file mode 100644 index 0000000..38b2120 --- /dev/null +++ b/www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.md5 @@ -0,0 +1 @@ +b5fdb9b9d434a7563a080c2d0629345c \ No newline at end of file diff --git a/www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.png b/www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..a02be7fb69f2e3200ac3c47ce85f9852d54cd200 GIT binary patch literal 823 zcmV-71IYY|P)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00PfRL_t(&f$f_OZnPi} zhI@rI;Q;jr-^POw^WOg|pYwx&vfZQ%XtT`LAj99|;3y#ddfZ*Ut_FB3gRovco)8t{ zyAb;NvV*X`>>#W!I|%E`4#N7fJqR6gC7eIzOLIsnyk_cR!`~3PL8#)jedo7B#sUu5 z{zNazEr0}~^rY-gxU~zh6v&2bCkZ%~E5X;)pU{O!gb|B+QObCW32^}-F{zVggm@qc z0^#F|`_Pqp8JG3)oDc%sydxLj!?ABbJcR@P1!c(Dm~ftV!YHv_hB-;5)SL|o=kHs; z^=6iDUr~jYZA(aI{Iz%q8WB#nwjrZUVnJU~kCwG2oWzIOh<2XhYE}l4=fjlTc$1u3 z5k6~V(F$|7m?Tzn<(7ne)8z)3YP>iT1H!55nbLvqUsFEI`*08rLJLBydBZCXDA;r{ zvY+-NOqzdBn55o{Finl8JqbaFfB-9`Cl{;>{kDWnv8a;Hz_HS3z8xVzFdQKps?`u; zltq+8C(5O;#?h2esS?5k1wyjn`s7QBlcOGl)I1J^DA_O&(gif-I}@IJ`Den8y}Xcb zP?M0(W=~n-gplp%gGL8S zs^~;m+Ch*IBHA$VZ*in8trOv?my3kD<3V#$-VTI#xq~1{<9#BKV9&|E)5C_lxHmfp ziaEzyuU-aWy$r&7`E + diff --git a/www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.md5 b/www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.md5 new file mode 100644 index 0000000..3db5c1e --- /dev/null +++ b/www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.md5 @@ -0,0 +1 @@ +3c872c5d2fa1cff6fd9ea4cd7db6ea38 \ No newline at end of file diff --git a/www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.png b/www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..e65c91d3222df9f78343f6b2d82b325e42a8ecd1 GIT binary patch literal 779 zcmV+m1N8ifP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00N^)L_t(&f$f>?af2`n zhBHE)I}Z>>XpTWR?%jWtS|9$x7EKC0e#CB5AQG}3Nfu6Xb00mvZdZG7?HK%5dvNU- z{LXotFsunqF>aebW_1z%=kYO{{6{miZ)G`TcJL4W!9Vy1|KK0|=knhl`<}lwS}SUP zIb^ovpHUNGUNc>mA-ucMH29|}dyd*qzw|eBXf)#u9rF(%D3m~!e`793mH!?7LN+J< zLXO0r=MVf-@_ggg4u7qwYUuH^`K@-iT`l;2B+uaAo|*h1M{n^rn*030d`DX?z?pMc z{PP-KSf%0-e)Wv`!vUZ0G}v7|5Yh#hM(`r8i^l7vhW4v zADSe-Qkn2)852U~#hhXFZuVCBjrx!I7vh4S%PU9N#ptV-Izz)xsDjn-)1lzkGYtTR&h_|<{wK*a_+6cU zmv53XF!*EtW3(#&&TaUMiBek$CDQP>^)Kt6D;{Kk2QU~E=d!azp8Oa*~<)x9}Rz~31M7$8A$)*H(4g_4%{O6inaoxNgXlPe|~}?f+)& z>@g^X2$tr{```S(ET5khZu{J;WiRc2J3Alcw`X`||66SXS5wP!@YVhA{>JTZ{4^|n zy?cEA8T^BP@DKhE=0El&k_^-HGmQW5_g|kp2LII_TsuCV{|Dz5X%TNTB-sD}002ov JPDHLkV1ktzf13aR literal 0 HcmV?d00001 diff --git a/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.map b/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.map new file mode 100644 index 0000000..d9a8f15 --- /dev/null +++ b/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.md5 b/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.md5 new file mode 100644 index 0000000..0a3fe3d --- /dev/null +++ b/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.md5 @@ -0,0 +1 @@ +eecaad120bf9f1954029b1660f5244b6 \ No newline at end of file diff --git a/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.png b/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..db298f93e5dc335b42cdef3eb14263a8d215cfeb GIT binary patch literal 1543 zcmV+i2Kf1jP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00o~(L_t(|ob8|uT|2}+D@cC;HZ9?>yx~6`9mEMCwYT#E> z17{Eq9kg2I+#W57odKqzkq_R0C&_F4+1|?BG4bh0yC| zJy@@gl~&bg#c%Njj=B=va5d+IDq9C z$1&UEac~3sGmT@)ez`*ZHG`X1Kf99vmZz|FpWSIO9J^5I^|&qnuT&;1wI36MST@ zmzxi~Gsx9;bT;q~iMwhI&IIlZ-EnN3MjYVv9@v5C!7J|Gp{T*TdWW-E#Nbk}sljFR zaw}4BLEMz!A_j9WGH_YgWZ**1VSz}%#hk+eQGg4?rT~}M%dJwuEB@g5T1nuYw4ppu z0=UE>ZI%J=Px-z7d3X8Vw$E+%V56kq_ar@b!4vi?rR`g4;0?TiH}D4Dz#I4u_>jEw z8NnYA^T6X7te6VV`=++Q?bR&q{E6HQmDl2=;0Ar#`7_{93;6wW@L`Yx{&kSzX5hU2 z0>}7c-PI%TWmn$?H@_qBcXKloCM>K+KsNBH=b9nQj$?Lk12c#{?P4C>=9>5C3HV;Hub^pYq^^=7H1zUSujr72qX|UI}>q zxe>L1XYcRzfM*`xPlYNb-&b(uMx>1Br#$xfYEKWI5xq9>Yy*7Y#{A$mQabeJ$;?Sf z2vu-_=NaG=LKS@AIWja(geuVDY{xjtlXGPno(ffPcXcD5Vo83$r-Uk8P1~3^sg{0H zcR1H#R{z0mq^PglmYUM2sgL()uEi;FgS*6eVv|Ra_fz5rXSr2EG}q#ka)8s{9Al7S zal9Q05xL#i^t*QO^nU5(E`>Y0y~@FtXG%m_cQqp|AoEUJZ*G zRQ}-+G5E4In~FU=0=;G4&+okc%EbVB=KGVDeRu?@g)7uRPySKOJAt|2!y{(!dDb%E zQ&P-3#hjK>?BNl%b32Qx1-Ld@Iea^2RP5mq5%|*L-_X@}z5b@Bdq2PT`s2X<6@#1C zCtm+`YihMiRtD*Utq;|}8Kje1U)KY(ibaq{+bafFE_~obI?1GNaHHA9JOvX{eCo4v zUB>grvDc@EkGy)`*cqidih!Y)AaIfpv6m=t%HXR&@Y^*le!Je_rrhkg3xcB>c-ls! zg6{@sdI-Jq<}zr@g(Vk!H%YIQD@O z4!#kfQEPB_2Px%mBqbLdcGEI~*K7t7;KJ9m!<}64VErIKvsqK{=`3|44P1;Gc-lr9 txEM9?w2cS^PYcjY5(rMD27WdD{09$}U9geQvXB4(002ovPDHLkV1gy#2s{7) literal 0 HcmV?d00001 diff --git a/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.map b/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.map new file mode 100644 index 0000000..18178a9 --- /dev/null +++ b/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.map @@ -0,0 +1,2 @@ + + diff --git a/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.md5 b/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.md5 new file mode 100644 index 0000000..fcf3e46 --- /dev/null +++ b/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.md5 @@ -0,0 +1 @@ +90288409fec4c7c6eac1e45dab6d2d9f \ No newline at end of file diff --git a/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.png b/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..cee03b1101ee8ab28ff09f3ed3413a7ad41b31f4 GIT binary patch literal 870 zcmV-s1DX7ZP)003760{{R3kT?;?0000LP)t-s{{R2~ z|Na>naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00RC=L_t(&f$f?NZiOHW zfOmyw!U3K~*y2Hm>HV)V`h(D?Zp$dum(cA6Ed@SXP(eN(?;syn1N=z_rJW2)5onO; zMj6}74oclpOW8rGTWTpgD0NFMWe25hsimwJWdN;&5MS+T3(kcoMsB|R4`mpXFA{|z z#Ps9$hX9cNS{0Mt1VIE=gS``tGs2Sl>B9dds3<+N<1miEeot1V@UsUM3gB3vZ46nnOLG? zoB4ZCriOw22Ixz66DA;`1&KH+#g{;5)dbLkGPk{>lq-;a33bGi3C$79w5u!SN=+V8 zVp37cQAL?opj;^T5$AqMF$NuRP?RnaPa$KHl>*PBhm@4Zg9WJT(iz?;rHde?*XSuX z8yUSBy~=_U%gdjT>JhY_8C^~JCmED>lyCB`KD|!O>}F<$lvtHo60)7H+4jrgQdu!* znTu~?zqXNGYOwl}C3ITNnoL%*vh<>~SryFEkJ4g=HA{EOn@2p~mZCvbJt;ZX(V(i1 zlp@ifjzP&1shP7c_?S`haBg?>w(sT3GfF%tdHh}XMc@XMN_{xDbEQ1l4M9NZ=JmS|AN wpk#>#bqq?DXi&$XWHDGakrkLXkU?oD-+g_g!B|JvDgXcg07*qoM6N<$g3e=)D*ylh literal 0 HcmV?d00001 diff --git a/www/api/group__LMS__Plugin.html b/www/api/group__LMS__Plugin.html new file mode 100644 index 0000000..11da5a4 --- /dev/null +++ b/www/api/group__LMS__Plugin.html @@ -0,0 +1,62 @@ + + +Light Media Scanner: Plugins-API + + + + + +

Plugins-API

+ +
+Plugins should implement the following call that provides required callbacks (see lightmediascanner_plugin.h):

+

    struct lms_plugin *lms_plugin_open(void)
+

+where:

+

+Users can add their own data to the end of this data structure. Callbacks and their meanings are:

+

    void *match(lms_plugin_t *p,
+                const char *path,
+                int len,
+                int base)
+

+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.

+

    int parse(lms_plugin_t *p,
+              struct lms_context *ctxt,
+              const struct lms_file_info *finfo,
+              void *match)
+

+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.

+

    int close(lms_plugin_t *p)
+

+Closes the plugin returned by lms_plugin_open(), this will run on the master process.

+

    int setup(lms_plugin_t *p, struct lms_context *ctxt)
+

+Prepare parser 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!

+

    int start(lms_plugin_t *p, struct lms_context *ctxt)
+

+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.

+

    int finish(lms_plugin_t *p, struct lms_context *ctxt)
+

+Finishes the plugin on slave process.

+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 lightmediascanner_db.h with functions to add audios, images, videos, playlists and possible more. Use should be pretty straightforward, see existing plugins to see usage examples.


Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/index.html b/www/api/index.html new file mode 100644 index 0000000..710cb22 --- /dev/null +++ b/www/api/index.html @@ -0,0 +1,49 @@ + + +Light Media Scanner: Main Page + + + + + +

Light Media Scanner Documentation

+

+

0.1

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 parser 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.

+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 lightmediascanner.h):

+

+

+

Note:
The whole library follows libC standard of "0 (zero) means success", unless explicitly stated (usually boolean queries where no error is possible/interesting).
+The first will walk all the files and children directories of top_path, check if files are handled by some parser and if they're, they'll be parsed and registered in the data base.

+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.

+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:

+

    +
  • files: known files.
      +
    • id: identification inside LMS/DB.
    • path: file path.
    • mtime: modification time, in seconds from UNIX epoch.
    • dtime: modification time, in seconds from UNIX epoch.
    • size: in bytes.
    +
  • audios: audio files.
      +
    • id: same as files.id
    • title: audio title.
    • album_id: same as audio_albums.id.
    • genre_id: same as audio_genres.id.
    • trackno: track number.
    • rating: rating.
    • playcnt: play count.
    +
  • audio_artists: audio artists.
      +
    • id: identification inside LMS/DB.
    • name: artist name.
    +
  • audio_albums: audio albums.
      +
    • id: identification inside LMS/DB.
    • artist_id: same as audio_artists.id.
    • name: album name.
    +
  • audio_genres: audio genres.
      +
    • id: identification inside LMS/DB.
    • name: genre name.
    +
  • playlists: playlists.
      +
    • id: identification inside LMS/DB.
    • title: playlists title.
    • n_entries: number of entries in this playlist.
    +
  • images: image files.
      +
    • id: identification inside LMS/DB.
    • title: image title.
    • artist: image creator or artirst or photographer or ...
    • date: image taken date or creation date or ...
    • width: image width.
    • height: image height.
    • orientation: image orientation.
    • gps_lat: GPS latitude.
    • gps_long: GPS longitude.
    • gps_alt: GPS altitude.
    +
  • videos: video files.
      +
    • id: identification inside LMS/DB.
    • title: video title.
    • artist: video artist or creator or producer or ...
    +
+
Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner_8c-source.html b/www/api/lightmediascanner_8c-source.html new file mode 100644 index 0000000..abca650 --- /dev/null +++ b/www/api/lightmediascanner_8c-source.html @@ -0,0 +1,360 @@ + + +Light Media Scanner: src/lib/lightmediascanner.c Source File + + + + + +
+ +
+

src/lib/lightmediascanner.c

Go to the documentation of this file.
00001 
+00021 #ifdef HAVE_CONFIG_H
+00022 #include "config.h"
+00023 #endif
+00024 
+00025 #include <dlfcn.h>
+00026 #include <stdio.h>
+00027 #include <stdlib.h>
+00028 #include <string.h>
+00029 
+00030 #include "lightmediascanner.h"
+00031 #include "lightmediascanner_private.h"
+00032 #include "lightmediascanner_plugin.h"
+00033 
+00034 #define DEFAULT_SLAVE_TIMEOUT 1000
+00035 #define DEFAULT_COMMIT_INTERVAL 100
+00036 
+00037 static int
+00038 _parser_load(struct parser *p, const char *so_path)
+00039 {
+00040     lms_plugin_t *(*plugin_open)(void);
+00041     char *errmsg;
+00042 
+00043     memset(p, 0, sizeof(*p));
+00044 
+00045     p->dl_handle = dlopen(so_path, RTLD_NOW | RTLD_LOCAL);
+00046     errmsg = dlerror();
+00047     if (errmsg) {
+00048         fprintf(stderr, "ERROR: could not dlopen() %s\n", errmsg);
+00049         return -1;
+00050     }
+00051 
+00052     plugin_open = dlsym(p->dl_handle, "lms_plugin_open");
+00053     errmsg = dlerror();
+00054     if (errmsg) {
+00055         fprintf(stderr, "ERROR: could not find plugin entry point %s\n",
+00056                 errmsg);
+00057         return -2;
+00058     }
+00059 
+00060     p->so_path = strdup(so_path);
+00061     if (!p->so_path) {
+00062         perror("strdup");
+00063         return -3;
+00064     }
+00065 
+00066     p->plugin = plugin_open();
+00067     if (!p->plugin) {
+00068         fprintf(stderr, "ERROR: plugin \"%s\" failed to init.\n", so_path);
+00069         return -4;
+00070     }
+00071 
+00072     return 0;
+00073 }
+00074 
+00075 static int
+00076 _parser_unload(struct parser *p)
+00077 {
+00078     int r;
+00079 
+00080     r = 0;
+00081     if (p->plugin) {
+00082         if (p->plugin->close(p->plugin) != 0) {
+00083             fprintf(stderr, "ERROR: plugin \"%s\" failed to deinit.\n",
+00084                     p->so_path);
+00085             r -= 1;
+00086         }
+00087     }
+00088 
+00089     if (p->dl_handle) {
+00090         char *errmsg;
+00091 
+00092         dlclose(p->dl_handle);
+00093         errmsg = dlerror();
+00094         if (errmsg) {
+00095             fprintf(stderr, "ERROR: could not dlclose() plugin \"%s\": %s\n",
+00096                     errmsg, p->so_path);
+00097             r -= 1;
+00098         }
+00099     }
+00100 
+00101     if (p->so_path)
+00102         free(p->so_path);
+00103 
+00104     return r;
+00105 }
+00106 
+00107 
+00108 /***********************************************************************
+00109  * Public API.
+00110  ***********************************************************************/
+00118 lms_t *
+00119 lms_new(const char *db_path)
+00120 {
+00121     lms_t *lms;
+00122 
+00123     lms = calloc(1, sizeof(lms_t));
+00124     if (!lms) {
+00125         perror("calloc");
+00126         return NULL;
+00127     }
+00128 
+00129     lms->cs_conv = lms_charset_conv_new();
+00130     if (!lms->cs_conv) {
+00131         free(lms);
+00132         return NULL;
+00133     }
+00134 
+00135     lms->commit_interval = DEFAULT_COMMIT_INTERVAL;
+00136     lms->slave_timeout = DEFAULT_SLAVE_TIMEOUT;
+00137     lms->db_path = strdup(db_path);
+00138     if (!lms->db_path) {
+00139         perror("strdup");
+00140         lms_charset_conv_free(lms->cs_conv);
+00141         free(lms);
+00142         return NULL;
+00143     }
+00144 
+00145     return lms;
+00146 }
+00147 
+00156 int
+00157 lms_free(lms_t *lms)
+00158 {
+00159     int i;
+00160 
+00161     if (!lms)
+00162         return 0;
+00163 
+00164     if (lms->is_processing)
+00165         return -1;
+00166 
+00167     if (lms->parsers) {
+00168         for (i = 0; i < lms->n_parsers; i++)
+00169             _parser_unload(lms->parsers + i);
+00170 
+00171         free(lms->parsers);
+00172     }
+00173 
+00174     free(lms->db_path);
+00175     lms_charset_conv_free(lms->cs_conv);
+00176     free(lms);
+00177     return 0;
+00178 }
+00179 
+00189 lms_plugin_t *
+00190 lms_parser_add(lms_t *lms, const char *so_path)
+00191 {
+00192     struct parser *parser;
+00193 
+00194     if (!lms)
+00195         return NULL;
+00196 
+00197     if (!so_path)
+00198         return NULL;
+00199 
+00200     if (lms->is_processing) {
+00201         fprintf(stderr, "ERROR: do not add parsers while it's processing.\n");
+00202         return NULL;
+00203     }
+00204 
+00205     lms->parsers = realloc(lms->parsers,
+00206                            (lms->n_parsers + 1) * sizeof(struct parser));
+00207     if (!lms->parsers) {
+00208         perror("realloc");
+00209         return NULL;
+00210     }
+00211 
+00212     parser = lms->parsers + lms->n_parsers;
+00213     if (_parser_load(parser, so_path) != 0) {
+00214         _parser_unload(parser);
+00215         return NULL;
+00216     }
+00217 
+00218     lms->n_parsers++;
+00219     return parser->plugin;
+00220 }
+00221 
+00234 lms_plugin_t *
+00235 lms_parser_find_and_add(lms_t *lms, const char *name)
+00236 {
+00237     char so_path[PATH_MAX];
+00238 
+00239     if (!lms)
+00240         return NULL;
+00241     if (!name)
+00242         return NULL;
+00243 
+00244     snprintf(so_path, sizeof(so_path), "%s/%s.so", PLUGINSDIR, name);
+00245     return lms_parser_add(lms, so_path);
+00246 }
+00247 
+00248 int
+00249 lms_parser_del_int(lms_t *lms, int i)
+00250 {
+00251     struct parser *parser;
+00252 
+00253     parser = lms->parsers + i;
+00254     _parser_unload(parser);
+00255     lms->n_parsers--;
+00256 
+00257     if (lms->n_parsers == 0) {
+00258         free(lms->parsers);
+00259         lms->parsers = NULL;
+00260         return 0;
+00261     } else {
+00262         int dif;
+00263 
+00264         dif = lms->n_parsers - i;
+00265         if (dif)
+00266             lms->parsers = memmove(parser, parser + 1,
+00267                                    dif * sizeof(struct parser));
+00268 
+00269         lms->parsers = realloc(lms->parsers,
+00270                                lms->n_parsers * sizeof(struct parser));
+00271         if (!lms->parsers) {
+00272             lms->n_parsers = 0;
+00273             return -1;
+00274         }
+00275 
+00276         return 0;
+00277     }
+00278 }
+00279 
+00288 int
+00289 lms_parser_del(lms_t *lms, lms_plugin_t *handle)
+00290 {
+00291     int i;
+00292 
+00293     if (!lms)
+00294         return -1;
+00295     if (!handle)
+00296         return -2;
+00297     if (!lms->parsers)
+00298         return -3;
+00299     if (lms->is_processing) {
+00300         fprintf(stderr, "ERROR: do not del parsers while it's processing.\n");
+00301         return -4;
+00302     }
+00303 
+00304     for (i = 0; i < lms->n_parsers; i++)
+00305         if (lms->parsers[i].plugin == handle)
+00306             return lms_parser_del_int(lms, i);
+00307 
+00308     return -3;
+00309 }
+00310 
+00320 int
+00321 lms_is_processing(const lms_t *lms)
+00322 {
+00323     if (!lms) {
+00324         fprintf(stderr, "ERROR: lms_is_processing(NULL)\n");
+00325         return -1;
+00326     }
+00327 
+00328     return lms->is_processing;
+00329 }
+00330 
+00339 const char *
+00340 lms_get_db_path(const lms_t *lms)
+00341 {
+00342     if (!lms) {
+00343         fprintf(stderr, "ERROR: lms_get_db_path(NULL)\n");
+00344         return NULL;
+00345     }
+00346 
+00347     return lms->db_path;
+00348 }
+00349 
+00361 int
+00362 lms_get_slave_timeout(const lms_t *lms)
+00363 {
+00364     if (!lms) {
+00365         fprintf(stderr, "ERROR: lms_get_slave_timeout(NULL)\n");
+00366         return -1;
+00367     }
+00368 
+00369     return lms->slave_timeout;
+00370 }
+00371 
+00382 void lms_set_slave_timeout(lms_t *lms, int ms)
+00383 {
+00384     if (!lms) {
+00385         fprintf(stderr, "ERROR: lms_set_slave_timeout(NULL, %d)\n", ms);
+00386         return;
+00387     }
+00388 
+00389     lms->slave_timeout = ms;
+00390 }
+00391 
+00403 unsigned int
+00404 lms_get_commit_interval(const lms_t *lms)
+00405 {
+00406     if (!lms) {
+00407         fprintf(stderr, "ERROR: lms_get_commit_interval(NULL)\n");
+00408         return (unsigned int)-1;
+00409     }
+00410 
+00411     return lms->commit_interval;
+00412 }
+00413 
+00426 void
+00427 lms_set_commit_interval(lms_t *lms, unsigned int transactions)
+00428 {
+00429     if (!lms) {
+00430         fprintf(stderr, "ERROR: lms_set_commit_interval(NULL, %u)\n",
+00431                 transactions);
+00432         return;
+00433     }
+00434 
+00435     lms->commit_interval = transactions;
+00436 }
+00437 
+00450 int
+00451 lms_charset_add(lms_t *lms, const char *charset)
+00452 {
+00453     if (!lms) {
+00454         fprintf(stderr, "ERROR: lms_charset_add(NULL)\n");
+00455         return -1;
+00456     }
+00457 
+00458     return lms_charset_conv_add(lms->cs_conv, charset);
+00459 }
+00460 
+00473 int
+00474 lms_charset_del(lms_t *lms, const char *charset)
+00475 {
+00476     if (!lms) {
+00477         fprintf(stderr, "ERROR: lms_charset_del(NULL)\n");
+00478         return -1;
+00479     }
+00480 
+00481     return lms_charset_conv_del(lms->cs_conv, charset);
+00482 }
+

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner_8c.html b/www/api/lightmediascanner_8c.html new file mode 100644 index 0000000..1faf301 --- /dev/null +++ b/www/api/lightmediascanner_8c.html @@ -0,0 +1,157 @@ + + +Light Media Scanner: src/lib/lightmediascanner.c File Reference + + + + + +
+ +
+

src/lib/lightmediascanner.c File Reference

#include <dlfcn.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "lightmediascanner.h"
+#include "lightmediascanner_private.h"
+#include "lightmediascanner_plugin.h"
+ +

+Include dependency graph for lightmediascanner.c:

+ + + +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define DEFAULT_SLAVE_TIMEOUT   1000
#define DEFAULT_COMMIT_INTERVAL   100

Functions

lms_tlms_new (const char *db_path)
int lms_free (lms_t *lms)
lms_plugin_tlms_parser_add (lms_t *lms, const char *so_path)
lms_plugin_tlms_parser_find_and_add (lms_t *lms, const char *name)
int lms_parser_del_int (lms_t *lms, int i)
int lms_parser_del (lms_t *lms, lms_plugin_t *handle)
int lms_is_processing (const lms_t *lms)
const char * lms_get_db_path (const lms_t *lms)
int lms_get_slave_timeout (const lms_t *lms)
void lms_set_slave_timeout (lms_t *lms, int ms)
unsigned int lms_get_commit_interval (const lms_t *lms)
void lms_set_commit_interval (lms_t *lms, unsigned int transactions)
int lms_charset_add (lms_t *lms, const char *charset)
int lms_charset_del (lms_t *lms, const char *charset)
+


Define Documentation

+ +
+
+ + + + +
#define DEFAULT_COMMIT_INTERVAL   100
+
+
+ +

+ +

+Definition at line 35 of file lightmediascanner.c. +

+Referenced by lms_new(). +

+

+ +

+
+ + + + +
#define DEFAULT_SLAVE_TIMEOUT   1000
+
+
+ +

+Copyright (C) 2007 by INdT

+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.

+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.

+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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

+

Author:
Gustavo Sverzut Barbieri <gustavo.barbieri@openbossa.org>
+ +

+Definition at line 34 of file lightmediascanner.c. +

+Referenced by lms_new(). +

+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int lms_parser_del_int (lms_t lms,
int  i 
)
+
+
+ +

+ +

+Definition at line 249 of file lightmediascanner.c. +

+References lms::n_parsers, and lms::parsers. +

+Referenced by lms_parser_del(), lms_parsers_setup(), and lms_parsers_start(). +

+

+


Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner_8c__incl.map b/www/api/lightmediascanner_8c__incl.map new file mode 100644 index 0000000..1c7fa6c --- /dev/null +++ b/www/api/lightmediascanner_8c__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/www/api/lightmediascanner_8c__incl.md5 b/www/api/lightmediascanner_8c__incl.md5 new file mode 100644 index 0000000..cae4d00 --- /dev/null +++ b/www/api/lightmediascanner_8c__incl.md5 @@ -0,0 +1 @@ +941e05618dc03c9ae93749b201be85d7 \ No newline at end of file diff --git a/www/api/lightmediascanner_8c__incl.png b/www/api/lightmediascanner_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..cb689cb1626b996c98ce995d36a948c1fa3d28fa GIT binary patch literal 8031 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 z + +Light Media Scanner: src/lib/lightmediascanner.h Source File + + + + + +
+ +
+

src/lib/lightmediascanner.h

Go to the documentation of this file.
00001 
+00107 #ifndef _LIGHTMEDIASCANNER_H_
+00108 #define _LIGHTMEDIASCANNER_H_ 1
+00109 
+00110 #ifdef API
+00111 #undef API
+00112 #endif
+00113 
+00114 #ifdef __GNUC__
+00115 # if __GNUC__ >= 4
+00116 #  define API __attribute__ ((visibility("default")))
+00117 #  define GNUC_NULL_TERMINATED __attribute__((__sentinel__))
+00118 # else
+00119 #  define API
+00120 #  define GNUC_NULL_TERMINATED
+00121 # endif
+00122 # if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+00123 #  define GNUC_PURE __attribute__((__pure__))
+00124 #  define GNUC_MALLOC __attribute__((__malloc__))
+00125 #  define GNUC_CONST __attribute__((__const__))
+00126 #  define GNUC_UNUSED __attribute__((__unused__))
+00127 # else
+00128 #  define GNUC_PURE
+00129 #  define GNUC_MALLOC
+00130 #  define GNUC_NORETURN
+00131 #  define GNUC_CONST
+00132 #  define GNUC_UNUSED
+00133 # endif
+00134 # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+00135 #  define GNUC_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
+00136 #  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))
+00137 # else
+00138 #  define GNUC_WARN_UNUSED_RESULT
+00139 #  define GNUC_NON_NULL(...)
+00140 # endif
+00141 #else
+00142 #  define API
+00143 #  define GNUC_NULL_TERMINATED
+00144 #  define GNUC_PURE
+00145 #  define GNUC_MALLOC
+00146 #  define GNUC_CONST
+00147 #  define GNUC_UNUSED
+00148 #  define GNUC_WARN_UNUSED_RESULT
+00149 #  define GNUC_NON_NULL(...)
+00150 #endif
+00151 
+00152 #ifdef __cplusplus
+00153 extern "C" {
+00154 #endif
+00155 
+00161     typedef struct lms lms_t;
+00162     typedef struct lms_plugin lms_plugin_t;
+00163 
+00164     API lms_t *lms_new(const char *db_path) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT;
+00165     API int lms_free(lms_t *lms) GNUC_NON_NULL(1);
+00166     API int lms_process(lms_t *lms, const char *top_path) GNUC_NON_NULL(1, 2);
+00167     API int lms_check(lms_t *lms, const char *top_path) GNUC_NON_NULL(1, 2);
+00168     API const char *lms_get_db_path(const lms_t *lms) GNUC_NON_NULL(1);
+00169     API int lms_is_processing(const lms_t *lms) GNUC_PURE GNUC_NON_NULL(1);
+00170     API int lms_get_slave_timeout(const lms_t *lms) GNUC_NON_NULL(1);
+00171     API void lms_set_slave_timeout(lms_t *lms, int ms) GNUC_NON_NULL(1);
+00172     API unsigned int lms_get_commit_interval(const lms_t *lms) GNUC_NON_NULL(1);
+00173     API void lms_set_commit_interval(lms_t *lms, unsigned int transactions) GNUC_NON_NULL(1);
+00174 
+00175     API lms_plugin_t *lms_parser_add(lms_t *lms, const char *so_path) GNUC_NON_NULL(1, 2);
+00176     API lms_plugin_t *lms_parser_find_and_add(lms_t *lms, const char *name) GNUC_NON_NULL(1, 2);
+00177     API int lms_parser_del(lms_t *lms, lms_plugin_t *handle) GNUC_NON_NULL(1, 2);
+00178 
+00179     API int lms_charset_add(lms_t *lms, const char *charset) GNUC_NON_NULL(1, 2);
+00180     API int lms_charset_del(lms_t *lms, const char *charset) GNUC_NON_NULL(1, 2);
+00181 
+00182 #ifdef __cplusplus
+00183 }
+00184 #endif
+00185 #endif /* _LIGHTMEDIASCANNER_H_ */
+

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner_8h.html b/www/api/lightmediascanner_8h.html new file mode 100644 index 0000000..b2a382e --- /dev/null +++ b/www/api/lightmediascanner_8h.html @@ -0,0 +1,493 @@ + + +Light Media Scanner: src/lib/lightmediascanner.h File Reference + + + + + +
+ +
+

src/lib/lightmediascanner.h File Reference

+

+This graph shows which files directly or indirectly include this file:

+ + + +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define _LIGHTMEDIASCANNER_H_   1
#define API
#define GNUC_NULL_TERMINATED
#define GNUC_PURE
#define GNUC_MALLOC
#define GNUC_CONST
#define GNUC_UNUSED
#define GNUC_WARN_UNUSED_RESULT
#define GNUC_NON_NULL(...)

Typedefs

typedef lms lms_t
typedef lms_plugin lms_plugin_t

Functions

API lms_tlms_new (const char *db_path) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT
API int lms_free (lms_t *lms) GNUC_NON_NULL(1)
API int lms_process (lms_t *lms, const char *top_path) GNUC_NON_NULL(1
API int API int lms_check (lms_t *lms, const char *top_path) GNUC_NON_NULL(1
API int API int API const
+char * 
lms_get_db_path (const lms_t *lms) GNUC_NON_NULL(1)
API int lms_is_processing (const lms_t *lms) GNUC_PURE GNUC_NON_NULL(1)
API int lms_get_slave_timeout (const lms_t *lms) GNUC_NON_NULL(1)
API void lms_set_slave_timeout (lms_t *lms, int ms) GNUC_NON_NULL(1)
API unsigned int lms_get_commit_interval (const lms_t *lms) GNUC_NON_NULL(1)
API void lms_set_commit_interval (lms_t *lms, unsigned int transactions) GNUC_NON_NULL(1)
API lms_plugin_tlms_parser_add (lms_t *lms, const char *so_path) GNUC_NON_NULL(1
API lms_plugin_t *API lms_plugin_tlms_parser_find_and_add (lms_t *lms, const char *name) GNUC_NON_NULL(1
API lms_plugin_t *API lms_plugin_t
+*API int 
lms_parser_del (lms_t *lms, lms_plugin_t *handle) GNUC_NON_NULL(1
API lms_plugin_t *API lms_plugin_t
+*API int API int 
lms_charset_add (lms_t *lms, const char *charset) GNUC_NON_NULL(1
API lms_plugin_t *API lms_plugin_t
+*API int API int API int 
lms_charset_del (lms_t *lms, const char *charset) GNUC_NON_NULL(1
+


Define Documentation

+ +
+
+ + + + +
#define _LIGHTMEDIASCANNER_H_   1
+
+
+ +

+ +

+Definition at line 108 of file lightmediascanner.h. +

+

+ +

+
+ + + + +
#define API
+
+
+ +

+ +

+Definition at line 142 of file lightmediascanner.h. +

+

+ +

+
+ + + + +
#define GNUC_CONST
+
+
+ +

+ +

+Definition at line 146 of file lightmediascanner.h. +

+

+ +

+
+ + + + +
#define GNUC_MALLOC
+
+
+ +

+ +

+Definition at line 145 of file lightmediascanner.h. +

+

+ +

+
+ + + + + + + + + +
#define GNUC_NON_NULL ( ...   ) 
+
+
+ +

+ +

+Definition at line 149 of file lightmediascanner.h. +

+

+ +

+
+ + + + +
#define GNUC_NULL_TERMINATED
+
+
+ +

+ +

+Definition at line 143 of file lightmediascanner.h. +

+

+ +

+
+ + + + +
#define GNUC_PURE
+
+
+ +

+ +

+Definition at line 144 of file lightmediascanner.h. +

+

+ +

+
+ + + + +
#define GNUC_UNUSED
+
+
+ +

+ +

+Definition at line 147 of file lightmediascanner.h. +

+

+ +

+
+ + + + +
#define GNUC_WARN_UNUSED_RESULT
+
+
+ +

+ +

+Definition at line 148 of file lightmediascanner.h. +

+

+


Typedef Documentation

+ +
+
+ + + + +
typedef struct lms_plugin lms_plugin_t
+
+
+ +

+ +

+Definition at line 162 of file lightmediascanner.h. +

+

+ +

+
+ + + + +
typedef struct lms lms_t
+
+
+ +

+ +

+Definition at line 161 of file lightmediascanner.h. +

+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
API lms_plugin_t* API lms_plugin_t* API int API int lms_charset_add (lms_t lms,
const char *  charset 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
API lms_plugin_t* API lms_plugin_t* API int API int API int lms_charset_del (lms_t lms,
const char *  charset 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
API int API int lms_check (lms_t lms,
const char *  top_path 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
API lms_plugin_t* lms_parser_add (lms_t lms,
const char *  so_path 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
API lms_plugin_t* API lms_plugin_t* API int lms_parser_del (lms_t lms,
lms_plugin_t handle 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
API lms_plugin_t* API lms_plugin_t* lms_parser_find_and_add (lms_t lms,
const char *  name 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
API int lms_process (lms_t lms,
const char *  top_path 
)
+
+
+ +

+ +

+

+


Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner_8h__dep__incl.map b/www/api/lightmediascanner_8h__dep__incl.map new file mode 100644 index 0000000..756e0e2 --- /dev/null +++ b/www/api/lightmediascanner_8h__dep__incl.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/www/api/lightmediascanner_8h__dep__incl.md5 b/www/api/lightmediascanner_8h__dep__incl.md5 new file mode 100644 index 0000000..9573517 --- /dev/null +++ b/www/api/lightmediascanner_8h__dep__incl.md5 @@ -0,0 +1 @@ +3896306936d5e31832c584767f4ea72b \ No newline at end of file diff --git a/www/api/lightmediascanner_8h__dep__incl.png b/www/api/lightmediascanner_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..7d4ac43ccab67446e51313fc11c6ec154f6f0604 GIT binary patch literal 7273 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 F{{ukFrLX`1 literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__charset__conv_8c-source.html b/www/api/lightmediascanner__charset__conv_8c-source.html new file mode 100644 index 0000000..ccf239c --- /dev/null +++ b/www/api/lightmediascanner__charset__conv_8c-source.html @@ -0,0 +1,315 @@ + + +Light Media Scanner: src/lib/lightmediascanner_charset_conv.c Source File + + + + + +
+ +
+

src/lib/lightmediascanner_charset_conv.c

Go to the documentation of this file.
00001 #include "lightmediascanner_charset_conv.h"
+00002 #include <iconv.h>
+00003 #include <stdio.h>
+00004 #include <stdlib.h>
+00005 #include <string.h>
+00006 #include <errno.h>
+00007 
+00008 struct lms_charset_conv {
+00009     iconv_t check;
+00010     iconv_t fallback;
+00011     unsigned int size;
+00012     iconv_t *convs;
+00013     char **names;
+00014 };
+00015 
+00025 lms_charset_conv_t *
+00026 lms_charset_conv_new(void)
+00027 {
+00028     lms_charset_conv_t *lcc;
+00029 
+00030     lcc = malloc(sizeof(*lcc));
+00031     if (!lcc) {
+00032         perror("malloc");
+00033         return NULL;
+00034     }
+00035 
+00036     lcc->check = iconv_open("UTF-8", "UTF-8");
+00037     if (lcc->check == (iconv_t)-1) {
+00038         perror("ERROR: could not create conversion checker");
+00039         goto error_check;
+00040     }
+00041 
+00042     lcc->fallback = iconv_open("UTF-8//IGNORE", "UTF-8");
+00043     if (lcc->fallback == (iconv_t)-1) {
+00044         perror("ERROR: could not create conversion fallback");
+00045         goto error_fallback;
+00046     }
+00047 
+00048     lcc->size = 0;
+00049     lcc->convs = NULL;
+00050     lcc->names = NULL;
+00051     return lcc;
+00052 
+00053   error_fallback:
+00054     iconv_close(lcc->check);
+00055   error_check:
+00056     free(lcc);
+00057 
+00058     return NULL;
+00059 }
+00060 
+00066 void
+00067 lms_charset_conv_free(lms_charset_conv_t *lcc)
+00068 {
+00069     int i;
+00070 
+00071     if (!lcc)
+00072         return;
+00073 
+00074     iconv_close(lcc->check);
+00075     iconv_close(lcc->fallback);
+00076 
+00077     for (i = 0; i < lcc->size; i++) {
+00078         iconv_close(lcc->convs[i]);
+00079         free(lcc->names[i]);
+00080     }
+00081 
+00082     if (lcc->convs)
+00083         free(lcc->convs);
+00084     if (lcc->names)
+00085         free(lcc->names);
+00086     free(lcc);
+00087 }
+00088 
+00097 int
+00098 lms_charset_conv_add(lms_charset_conv_t *lcc, const char *charset)
+00099 {
+00100     iconv_t cd, *convs;
+00101     char **names;
+00102     int idx, ns;
+00103 
+00104     if (!lcc)
+00105         return -1;
+00106 
+00107     if (!charset)
+00108         return -2;
+00109 
+00110     cd = iconv_open("UTF-8", charset);
+00111     if (cd == (iconv_t)-1) {
+00112         fprintf(stderr, "ERROR: could not add conversion charset '%s': %s\n",
+00113                 charset, strerror(errno));
+00114         return -3;
+00115     }
+00116 
+00117     idx = lcc->size;
+00118     ns = lcc->size + 1;
+00119 
+00120     convs = realloc(lcc->convs, ns * sizeof(*convs));
+00121     if (!convs)
+00122         goto realloc_error;
+00123     lcc->convs = convs;
+00124     lcc->convs[idx] = cd;
+00125 
+00126     names = realloc(lcc->names, ns * sizeof(*names));
+00127     if (!names)
+00128         goto realloc_error;
+00129     lcc->names = names;
+00130     lcc->names[idx] = strdup(charset);
+00131     if (!lcc->names[idx])
+00132         goto realloc_error;
+00133 
+00134     lcc->size = ns;
+00135     return 0;
+00136 
+00137   realloc_error:
+00138     perror("realloc");
+00139     iconv_close(cd);
+00140     return -4;
+00141 }
+00142 
+00143 static int
+00144 _find(const lms_charset_conv_t *lcc, const char *charset)
+00145 {
+00146     int i;
+00147 
+00148     for (i = 0; i < lcc->size; i++)
+00149         if (strcmp(lcc->names[i], charset) == 0)
+00150             return i;
+00151 
+00152     return -1;
+00153 }
+00154 
+00163 int
+00164 lms_charset_conv_del(lms_charset_conv_t *lcc, const char *charset)
+00165 {
+00166     iconv_t *convs;
+00167     char **names;
+00168     int idx;
+00169 
+00170     if (!lcc)
+00171         return -1;
+00172 
+00173     if (!charset)
+00174         return -2;
+00175 
+00176     idx = _find(lcc, charset);
+00177     if (idx < 0) {
+00178         fprintf(stderr, "ERROR: could not find charset '%s'\n", charset);
+00179         return -3;
+00180     }
+00181 
+00182     iconv_close(lcc->convs[idx]);
+00183     free(lcc->names[idx]);
+00184 
+00185     lcc->size--;
+00186     for (; idx < lcc->size; idx++) {
+00187         lcc->convs[idx] = lcc->convs[idx + 1];
+00188         lcc->names[idx] = lcc->names[idx + 1];
+00189     }
+00190 
+00191     convs = realloc(lcc->convs, lcc->size * sizeof(*convs));
+00192     if (convs)
+00193         lcc->convs = convs;
+00194     else
+00195         perror("could not realloc 'convs'");
+00196 
+00197     names = realloc(lcc->names, lcc->size * sizeof(*names));
+00198     if (names)
+00199         lcc->names = names;
+00200     else
+00201         perror("could not realloc 'names'");
+00202 
+00203     return 0;
+00204 }
+00205 
+00206 static int
+00207 _check(lms_charset_conv_t *lcc, const char *istr, unsigned int ilen, char *ostr, unsigned int olen)
+00208 {
+00209     char *inbuf, *outbuf;
+00210     size_t r, inlen, outlen;
+00211 
+00212     inbuf = (char *)istr;
+00213     inlen = ilen;
+00214     outbuf = ostr;
+00215     outlen = olen;
+00216 
+00217     iconv(lcc->check, NULL, NULL, NULL, NULL);
+00218     r = iconv(lcc->check, &inbuf, &inlen, &outbuf, &outlen);
+00219     if (r == (size_t)-1)
+00220         return -1;
+00221     else
+00222         return 0;
+00223 }
+00224 
+00225 static int
+00226 _conv(iconv_t cd, char **p_str, unsigned int *p_len, char *ostr, unsigned int olen)
+00227 {
+00228     char *inbuf, *outbuf;
+00229     size_t r, inlen, outlen;
+00230 
+00231     inbuf = *p_str;
+00232     inlen = *p_len;
+00233     outbuf = ostr;
+00234     outlen = olen;
+00235 
+00236     iconv(cd, NULL, NULL, NULL, NULL);
+00237     r = iconv(cd, &inbuf, &inlen, &outbuf, &outlen);
+00238     if (r == (size_t)-1)
+00239         return -1;
+00240 
+00241     *p_len = olen - outlen;
+00242     free(*p_str);
+00243     *p_str = ostr;
+00244 
+00245     outbuf = realloc(*p_str, *p_len + 1);
+00246     if (!outbuf)
+00247         perror("realloc");
+00248     else
+00249         *p_str = outbuf;
+00250 
+00251     (*p_str)[*p_len] = '\0';
+00252 
+00253     return 0;
+00254 }
+00255 
+00265 int
+00266 lms_charset_conv(lms_charset_conv_t *lcc, char **p_str, unsigned int *p_len)
+00267 {
+00268     char *outstr;
+00269     int i, outlen;
+00270 
+00271     if (!lcc)
+00272         return -1;
+00273     if (!p_str)
+00274         return -2;
+00275     if (!p_len)
+00276         return -3;
+00277     if (!*p_str || !*p_len)
+00278         return 0;
+00279 
+00280     outlen = 2 * *p_len;
+00281     outstr = malloc(outlen + 1);
+00282     if (!outstr) {
+00283         perror("malloc");
+00284         return -4;
+00285     }
+00286 
+00287     if (_check(lcc, *p_str, *p_len, outstr, outlen) == 0) {
+00288         free(outstr);
+00289         return 0;
+00290     }
+00291 
+00292     for (i = 0; i < lcc->size; i++)
+00293         if (_conv(lcc->convs[i], p_str, p_len, outstr, outlen) == 0)
+00294             return 0;
+00295 
+00296     fprintf(stderr,
+00297             "WARNING: could not convert '%*s' to any charset, use fallback\n",
+00298             *p_len, *p_str);
+00299     i = _conv(lcc->fallback, p_str, p_len, outstr, outlen);
+00300     if (i < 0) {
+00301         memset(*p_str, '?', *p_len);
+00302         free(outstr);
+00303     }
+00304     return i;
+00305 }
+00306 
+00316 int
+00317 lms_charset_conv_check(lms_charset_conv_t *lcc, const char *str, unsigned int len)
+00318 {
+00319     char *outstr;
+00320     int r, outlen;
+00321 
+00322     if (!lcc)
+00323         return -1;
+00324     if (!str || !len)
+00325         return 0;
+00326 
+00327     outlen = 2 * len;
+00328     outstr = malloc(outlen);
+00329     if (!outstr) {
+00330         perror("malloc");
+00331         return -2;
+00332     }
+00333 
+00334     r = _check(lcc, str, len, outstr, outlen);
+00335     free(outstr);
+00336     return r;
+00337 }
+

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__charset__conv_8c.html b/www/api/lightmediascanner__charset__conv_8c.html new file mode 100644 index 0000000..6fae642 --- /dev/null +++ b/www/api/lightmediascanner__charset__conv_8c.html @@ -0,0 +1,230 @@ + + +Light Media Scanner: src/lib/lightmediascanner_charset_conv.c File Reference + + + + + +
+ +
+

src/lib/lightmediascanner_charset_conv.c File Reference

#include "lightmediascanner_charset_conv.h"
+#include <iconv.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+ +

+Include dependency graph for lightmediascanner_charset_conv.c:

+ + + +

+Go to the source code of this file. + + + + + + + + + + + + + + +

Functions

lms_charset_conv_tlms_charset_conv_new (void)
void lms_charset_conv_free (lms_charset_conv_t *lcc)
int lms_charset_conv_add (lms_charset_conv_t *lcc, const char *charset)
int lms_charset_conv_del (lms_charset_conv_t *lcc, const char *charset)
int lms_charset_conv (lms_charset_conv_t *lcc, char **p_str, unsigned int *p_len)
int lms_charset_conv_check (lms_charset_conv_t *lcc, const char *str, unsigned int len)
+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int lms_charset_conv (lms_charset_conv_t lcc,
char **  p_str,
unsigned int *  p_len 
)
+
+
+ +

+If required, do charset conversion to UTF-8.

+

Parameters:
+ + + + +
lcc existing Light Media Scanner charset conversion.
p_str string to be converted.
p_len string size.
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 266 of file lightmediascanner_charset_conv.c. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_charset_conv_add (lms_charset_conv_t lcc,
const char *  charset 
)
+
+
+ +

+Register new charset to conversion tool.

+

Parameters:
+ + + +
lcc existing Light Media Scanner charset conversion.
charset charset name as understood by iconv_open(3).
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 98 of file lightmediascanner_charset_conv.c. +

+Referenced by lms_charset_add(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int lms_charset_conv_check (lms_charset_conv_t lcc,
const char *  str,
unsigned int  len 
)
+
+
+ +

+Check if strings is not UTF-8 and conversion is required.

+

Parameters:
+ + + + +
lcc existing Light Media Scanner charset conversion.
str string to be analysed.
len string size.
+
+
Returns:
0 if string is already UTF-8.
+ +

+Definition at line 317 of file lightmediascanner_charset_conv.c. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_charset_conv_del (lms_charset_conv_t lcc,
const char *  charset 
)
+
+
+ +

+Forget about previously registered charset in conversion tool.

+

Parameters:
+ + + +
lcc existing Light Media Scanner charset conversion.
charset charset name.
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 164 of file lightmediascanner_charset_conv.c. +

+Referenced by lms_charset_del(). +

+

+


Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__charset__conv_8c__incl.map b/www/api/lightmediascanner__charset__conv_8c__incl.map new file mode 100644 index 0000000..85b1a85 --- /dev/null +++ b/www/api/lightmediascanner__charset__conv_8c__incl.map @@ -0,0 +1 @@ + diff --git a/www/api/lightmediascanner__charset__conv_8c__incl.md5 b/www/api/lightmediascanner__charset__conv_8c__incl.md5 new file mode 100644 index 0000000..ab00d3e --- /dev/null +++ b/www/api/lightmediascanner__charset__conv_8c__incl.md5 @@ -0,0 +1 @@ +a9fb93c4b14d546e8218fa70f21420bb \ No newline at end of file diff --git a/www/api/lightmediascanner__charset__conv_8c__incl.png b/www/api/lightmediascanner__charset__conv_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..fdfc10ce412d3969624b1fa948e43d8c787cb59a GIT binary patch literal 2883 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 + +Light Media Scanner: src/lib/lightmediascanner_charset_conv.h Source File + + + + + +
+ +
+

src/lib/lightmediascanner_charset_conv.h

Go to the documentation of this file.
00001 
+00021 #ifndef _LIGHTMEDIASCANNER_CHARSET_CONV_H_
+00022 #define _LIGHTMEDIASCANNER_CHARSET_CONV_H_ 1
+00023 
+00024 #ifdef GNUC_MALLOC
+00025 #undef GNUC_MALLOC
+00026 #endif
+00027 #ifdef GNUC_WARN_UNUSED_RESULT
+00028 #undef GNUC_WARN_UNUSED_RESULT
+00029 #endif
+00030 #ifdef GNUC_NON_NULL
+00031 #undef GNUC_NON_NULL
+00032 #endif
+00033 #ifdef API
+00034 #undef API
+00035 #endif
+00036 
+00037 #ifdef __GNUC__
+00038 # if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+00039 #  define GNUC_MALLOC __attribute__((__malloc__))
+00040 # else
+00041 #  define GNUC_MALLOC
+00042 # endif
+00043 # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+00044 #  define GNUC_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
+00045 #  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))
+00046 # else
+00047 #  define GNUC_WARN_UNUSED_RESULT
+00048 #  define GNUC_NON_NULL(...)
+00049 # endif
+00050 # if __GNUC__ >= 4
+00051 #  define API __attribute__ ((visibility("default")))
+00052 # else
+00053 #  define API
+00054 # endif
+00055 #else
+00056 #  define GNUC_MALLOC
+00057 #  define GNUC_WARN_UNUSED_RESULT
+00058 #  define GNUC_NON_NULL(...)
+00059 #  define API
+00060 #endif
+00061 
+00062 #ifdef __cplusplus
+00063 extern "C" {
+00064 #endif
+00065 
+00072     typedef struct lms_charset_conv lms_charset_conv_t;
+00073 
+00074     API lms_charset_conv_t *lms_charset_conv_new(void) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT;
+00075     API void lms_charset_conv_free(lms_charset_conv_t *lcc) GNUC_NON_NULL(1);
+00076     API int lms_charset_conv_add(lms_charset_conv_t *lcc, const char *charset) GNUC_NON_NULL(1, 2);
+00077     API int lms_charset_conv_del(lms_charset_conv_t *lcc, const char *charset) GNUC_NON_NULL(1, 2);
+00078 
+00079     API int lms_charset_conv(lms_charset_conv_t *lcc, char **p_str, unsigned int *p_len) GNUC_NON_NULL(1, 2, 3);
+00080     API int lms_charset_conv_check(lms_charset_conv_t *lcc, const char *str, unsigned int len) GNUC_NON_NULL(1, 2);
+00081 
+00085 #ifdef __cplusplus
+00086 }
+00087 #endif
+00088 #endif /* _LIGHTMEDIASCANNER_CHARSET_CONV_H_ */
+

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__charset__conv_8h.html b/www/api/lightmediascanner__charset__conv_8h.html new file mode 100644 index 0000000..7fa6cd5 --- /dev/null +++ b/www/api/lightmediascanner__charset__conv_8h.html @@ -0,0 +1,160 @@ + + +Light Media Scanner: src/lib/lightmediascanner_charset_conv.h File Reference + + + + + +
+ +
+

src/lib/lightmediascanner_charset_conv.h File Reference

+

+This graph shows which files directly or indirectly include this file:

+ + + +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define _LIGHTMEDIASCANNER_CHARSET_CONV_H_   1
#define GNUC_MALLOC
#define GNUC_WARN_UNUSED_RESULT
#define GNUC_NON_NULL(...)
#define API

Typedefs

typedef lms_charset_conv lms_charset_conv_t

Functions

API lms_charset_conv_tlms_charset_conv_new (void) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT
API void lms_charset_conv_free (lms_charset_conv_t *lcc) GNUC_NON_NULL(1)
API int lms_charset_conv_add (lms_charset_conv_t *lcc, const char *charset) GNUC_NON_NULL(1
API int API int lms_charset_conv_del (lms_charset_conv_t *lcc, const char *charset) GNUC_NON_NULL(1
API int API int API int lms_charset_conv (lms_charset_conv_t *lcc, char **p_str, unsigned int *p_len) GNUC_NON_NULL(1
API int API int API int API
+int 
lms_charset_conv_check (lms_charset_conv_t *lcc, const char *str, unsigned int len) GNUC_NON_NULL(1
+


Define Documentation

+ +
+
+ + + + +
#define _LIGHTMEDIASCANNER_CHARSET_CONV_H_   1
+
+
+ +

+Copyright (C) 2007 by INdT

+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.

+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.

+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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

+

Author:
Gustavo Sverzut Barbieri <gustavo.barbieri@openbossa.org>
+ +

+Definition at line 22 of file lightmediascanner_charset_conv.h. +

+

+ +

+
+ + + + +
#define API
+
+
+ +

+ +

+Definition at line 59 of file lightmediascanner_charset_conv.h. +

+

+ +

+
+ + + + +
#define GNUC_MALLOC
+
+
+ +

+ +

+Definition at line 56 of file lightmediascanner_charset_conv.h. +

+

+ +

+
+ + + + + + + + + +
#define GNUC_NON_NULL ( ...   ) 
+
+
+ +

+ +

+Definition at line 58 of file lightmediascanner_charset_conv.h. +

+

+ +

+
+ + + + +
#define GNUC_WARN_UNUSED_RESULT
+
+
+ +

+ +

+Definition at line 57 of file lightmediascanner_charset_conv.h. +

+

+


Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__charset__conv_8h__dep__incl.map b/www/api/lightmediascanner__charset__conv_8h__dep__incl.map new file mode 100644 index 0000000..36a45c5 --- /dev/null +++ b/www/api/lightmediascanner__charset__conv_8h__dep__incl.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + 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 index 0000000..42dc467 --- /dev/null +++ b/www/api/lightmediascanner__charset__conv_8h__dep__incl.md5 @@ -0,0 +1 @@ +aa3d888691589f3b2f80ad8c0ab8be67 \ No newline at end of file diff --git a/www/api/lightmediascanner__charset__conv_8h__dep__incl.png b/www/api/lightmediascanner__charset__conv_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..182317f6c9e434d015fcfb905b55f525692ef6ae GIT binary patch literal 6987 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 literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__check_8c-source.html b/www/api/lightmediascanner__check_8c-source.html new file mode 100644 index 0000000..4d8df4f --- /dev/null +++ b/www/api/lightmediascanner__check_8c-source.html @@ -0,0 +1,662 @@ + + +Light Media Scanner: src/lib/lightmediascanner_check.c Source File + + + + + +
+ +
+

src/lib/lightmediascanner_check.c

Go to the documentation of this file.
00001 
+00021 #ifdef HAVE_CONFIG_H
+00022 #include "config.h"
+00023 #endif
+00024 
+00025 #define _GNU_SOURCE
+00026 #include <sys/wait.h>
+00027 #include <sys/stat.h>
+00028 #include <unistd.h>
+00029 #include <dirent.h>
+00030 #include <signal.h>
+00031 #include <time.h>
+00032 
+00033 #include <stdio.h>
+00034 #include <stdlib.h>
+00035 #include <string.h>
+00036 
+00037 #include "lightmediascanner.h"
+00038 #include "lightmediascanner_private.h"
+00039 #include "lightmediascanner_db_private.h"
+00040 
+00041 struct master_db {
+00042     sqlite3 *handle;
+00043     sqlite3_stmt *get_files;
+00044 };
+00045 
+00046 struct slave_db {
+00047     sqlite3 *handle;
+00048     sqlite3_stmt *transaction_begin;
+00049     sqlite3_stmt *transaction_commit;
+00050     sqlite3_stmt *delete_file_info;
+00051     sqlite3_stmt *update_file_info;
+00052 };
+00053 
+00054 
+00055 /***********************************************************************
+00056  * Master-Slave communication.
+00057  ***********************************************************************/
+00058 
+00059 struct comm_finfo {
+00060     int path_len;
+00061     int base;
+00062     int64_t id;
+00063     time_t mtime;
+00064     time_t dtime;
+00065     size_t size;
+00066     unsigned int flags;
+00067 #define COMM_FINFO_FLAG_OUTDATED 1
+00068 };
+00069 
+00070 static int
+00071 _master_send_file(const struct fds *master, const struct lms_file_info finfo, unsigned int flags)
+00072 {
+00073     struct comm_finfo ci;
+00074 
+00075     ci.path_len = finfo.path_len;
+00076     ci.base = finfo.base;
+00077     ci.id = finfo.id;
+00078     ci.mtime = finfo.mtime;
+00079     ci.dtime = finfo.dtime;
+00080     ci.size = finfo.size;
+00081     ci.flags = flags;
+00082 
+00083     if (write(master->w, &ci, sizeof(ci)) < 0) {
+00084         perror("write");
+00085         return -1;
+00086     }
+00087 
+00088     if (write(master->w, finfo.path, finfo.path_len) < 0) {
+00089         perror("write");
+00090         return -1;
+00091     }
+00092 
+00093     return 0;
+00094 }
+00095 
+00096 static int
+00097 _master_send_finish(const struct fds *master)
+00098 {
+00099     struct comm_finfo ci = {-1, -1, -1, -1, -1, -1, 0};
+00100 
+00101     if (write(master->w, &ci, sizeof(ci)) < 0) {
+00102         perror("write");
+00103         return -1;
+00104     }
+00105 
+00106     return 0;
+00107 }
+00108 
+00109 static int
+00110 _master_recv_reply(const struct fds *master, struct pollfd *pfd, int *reply, int timeout)
+00111 {
+00112     int r;
+00113 
+00114     r = poll(pfd, 1, timeout);
+00115     if (r < 0) {
+00116         perror("poll");
+00117         return -1;
+00118     }
+00119 
+00120     if (r == 0)
+00121         return 1;
+00122 
+00123     if (read(master->r, reply, sizeof(*reply)) != sizeof(*reply)) {
+00124         perror("read");
+00125         return -2;
+00126     }
+00127 
+00128     return 0;
+00129 }
+00130 
+00131 static int
+00132 _slave_send_reply(const struct fds *slave, int reply)
+00133 {
+00134     if (write(slave->w, &reply, sizeof(reply)) == 0) {
+00135         perror("write");
+00136         return -1;
+00137     }
+00138     return 0;
+00139 }
+00140 
+00141 static int
+00142 _slave_recv_file(const struct fds *slave, struct lms_file_info *finfo, unsigned int *flags)
+00143 {
+00144     struct comm_finfo ci;
+00145     static char path[PATH_SIZE + 1];
+00146     int r;
+00147 
+00148     r = read(slave->r, &ci, sizeof(ci));
+00149     if (r != sizeof(ci)) {
+00150         perror("read");
+00151         return -1;
+00152     }
+00153 
+00154     finfo->path_len = ci.path_len;
+00155     finfo->base = ci.base;
+00156     finfo->id = ci.id;
+00157     finfo->mtime = ci.mtime;
+00158     finfo->dtime = ci.dtime;
+00159     finfo->size = ci.size;
+00160     finfo->path = NULL;
+00161     *flags = ci.flags;
+00162 
+00163     if (ci.path_len == -1)
+00164         return 0;
+00165 
+00166     if (ci.path_len > PATH_SIZE) {
+00167         fprintf(stderr, "ERROR: path too long (%d/%d)\n",
+00168                 ci.path_len, PATH_SIZE);
+00169         return -2;
+00170     }
+00171 
+00172     r = read(slave->r, path, ci.path_len);
+00173     if (r != ci.path_len) {
+00174         fprintf(stderr, "ERROR: could not read whole path %d/%d\n",
+00175                 r, ci.path_len);
+00176         return -3;
+00177     }
+00178 
+00179     path[ci.path_len] = 0;
+00180     finfo->path = path;
+00181     return 0;
+00182 }
+00183 
+00184 
+00185 /***********************************************************************
+00186  * Slave-side.
+00187  ***********************************************************************/
+00188 
+00189 static int
+00190 _slave_db_compile_all_stmts(struct slave_db *db)
+00191 {
+00192     sqlite3 *handle;
+00193 
+00194     handle = db->handle;
+00195 
+00196     db->transaction_begin = lms_db_compile_stmt_begin_transaction(handle);
+00197     if (!db->transaction_begin)
+00198         return -1;
+00199 
+00200     db->transaction_commit = lms_db_compile_stmt_end_transaction(handle);
+00201     if (!db->transaction_commit)
+00202         return -2;
+00203 
+00204     db->delete_file_info = lms_db_compile_stmt_delete_file_info(handle);
+00205     if (!db->delete_file_info)
+00206         return -3;
+00207 
+00208     db->update_file_info = lms_db_compile_stmt_update_file_info(handle);
+00209     if (!db->update_file_info)
+00210         return -4;
+00211 
+00212     return 0;
+00213 }
+00214 
+00215 static struct slave_db *
+00216 _slave_db_open(const char *db_path)
+00217 {
+00218     struct slave_db *db;
+00219 
+00220     db = calloc(1, sizeof(*db));
+00221     if (!db) {
+00222         perror("calloc");
+00223         return NULL;
+00224     }
+00225 
+00226     if (sqlite3_open(db_path, &db->handle) != SQLITE_OK) {
+00227         fprintf(stderr, "ERROR: could not open DB \"%s\": %s\n",
+00228                 db_path, sqlite3_errmsg(db->handle));
+00229         goto error;
+00230     }
+00231 
+00232     return db;
+00233 
+00234   error:
+00235     sqlite3_close(db->handle);
+00236     free(db);
+00237     return NULL;
+00238 }
+00239 
+00240 static int
+00241 _slave_db_close(struct slave_db *db)
+00242 {
+00243     if (db->transaction_begin)
+00244         lms_db_finalize_stmt(db->transaction_begin, "transaction_begin");
+00245 
+00246     if (db->transaction_commit)
+00247         lms_db_finalize_stmt(db->transaction_commit, "transaction_commit");
+00248 
+00249     if (db->delete_file_info)
+00250         lms_db_finalize_stmt(db->delete_file_info, "delete_file_info");
+00251 
+00252     if (db->update_file_info)
+00253         lms_db_finalize_stmt(db->update_file_info, "update_file_info");
+00254 
+00255     if (sqlite3_close(db->handle) != SQLITE_OK) {
+00256         fprintf(stderr, "ERROR: clould not close DB (slave): %s\n",
+00257                 sqlite3_errmsg(db->handle));
+00258         return -1;
+00259     }
+00260     free(db);
+00261 
+00262     return 0;
+00263 }
+00264 
+00265 static int
+00266 _init_sync_send(struct fds *fds)
+00267 {
+00268     return _slave_send_reply(fds, 0);
+00269 }
+00270 
+00271 static int
+00272 _slave_work_int(lms_t *lms, struct fds *fds, struct slave_db *db)
+00273 {
+00274     struct lms_file_info finfo;
+00275     void **parser_match;
+00276     unsigned int counter, flags;
+00277     int r;
+00278 
+00279     parser_match = malloc(lms->n_parsers * sizeof(*parser_match));
+00280     if (!parser_match) {
+00281         perror("malloc");
+00282         return -6;
+00283     }
+00284 
+00285     _init_sync_send(fds);
+00286 
+00287     counter = 0;
+00288     lms_db_begin_transaction(db->transaction_begin);
+00289 
+00290     while (((r = _slave_recv_file(fds, &finfo, &flags)) == 0) &&
+00291            finfo.path_len > 0) {
+00292         r = lms_db_update_file_info(db->update_file_info, &finfo);
+00293         if (r < 0)
+00294             fprintf(stderr, "ERROR: could not update path in DB\n");
+00295         else if (flags & COMM_FINFO_FLAG_OUTDATED) {
+00296             int used;
+00297 
+00298             used = lms_parsers_check_using(lms, parser_match, &finfo);
+00299             if (!used)
+00300                 r = 0;
+00301             else {
+00302                 r = lms_parsers_run(lms, db->handle, parser_match, &finfo);
+00303                 if (r < 0) {
+00304                     fprintf(stderr, "ERROR: pid=%d failed to parse \"%s\".\n",
+00305                             getpid(), finfo.path);
+00306                     lms_db_delete_file_info(db->delete_file_info, &finfo);
+00307                 }
+00308             }
+00309         }
+00310 
+00311         _slave_send_reply(fds, r);
+00312         counter++;
+00313         if (counter > lms->commit_interval) {
+00314             lms_db_end_transaction(db->transaction_commit);
+00315             lms_db_begin_transaction(db->transaction_begin);
+00316             counter = 0;
+00317         }
+00318     }
+00319 
+00320     free(parser_match);
+00321     lms_db_end_transaction(db->transaction_commit);
+00322 
+00323     return r;
+00324 }
+00325 
+00326 static int
+00327 _slave_work(lms_t *lms, struct fds *fds)
+00328 {
+00329     struct slave_db *db;
+00330     int r;
+00331 
+00332     db = _slave_db_open(lms->db_path);
+00333     if (!db)
+00334         return -1;
+00335 
+00336     if (lms_parsers_setup(lms, db->handle) != 0) {
+00337         fprintf(stderr, "ERROR: could not setup parsers.\n");
+00338         r = -2;
+00339         goto end;
+00340     }
+00341 
+00342     if (_slave_db_compile_all_stmts(db) != 0) {
+00343         fprintf(stderr, "ERROR: could not compile statements.\n");
+00344         r = -3;
+00345         goto end;
+00346     }
+00347 
+00348     if (lms_parsers_start(lms, db->handle) != 0) {
+00349         fprintf(stderr, "ERROR: could not start parsers.\n");
+00350         r = -4;
+00351         goto end;
+00352     }
+00353     if (lms->n_parsers < 1) {
+00354         fprintf(stderr, "ERROR: no parser could be started, exit.\n");
+00355         r = -5;
+00356         goto end;
+00357     }
+00358 
+00359     r = _slave_work_int(lms, fds, db);
+00360 
+00361   end:
+00362     lms_parsers_finish(lms, db->handle);
+00363     _slave_db_close(db);
+00364     _init_sync_send(fds);
+00365 
+00366     return r;
+00367 }
+00368 
+00369 
+00370 /***********************************************************************
+00371  * Master-side.
+00372  ***********************************************************************/
+00373 
+00374 static int
+00375 _master_db_compile_all_stmts(struct master_db *db)
+00376 {
+00377     sqlite3 *handle;
+00378 
+00379     handle = db->handle;
+00380 
+00381     db->get_files = lms_db_compile_stmt_get_files(handle);
+00382     if (!db->get_files)
+00383         return -1;
+00384 
+00385     return 0;
+00386 }
+00387 
+00388 static struct master_db *
+00389 _master_db_open(const char *db_path)
+00390 {
+00391     struct master_db *db;
+00392 
+00393     db = calloc(1, sizeof(*db));
+00394     if (!db) {
+00395         perror("calloc");
+00396         return NULL;
+00397     }
+00398 
+00399     if (sqlite3_open(db_path, &db->handle) != SQLITE_OK) {
+00400         fprintf(stderr, "ERROR: could not open DB \"%s\": %s\n",
+00401                 db_path, sqlite3_errmsg(db->handle));
+00402         goto error;
+00403     }
+00404 
+00405     if (lms_db_create_core_tables_if_required(db->handle) != 0) {
+00406         fprintf(stderr, "ERROR: could not setup tables and indexes.\n");
+00407         goto error;
+00408     }
+00409 
+00410     if (_master_db_compile_all_stmts(db) != 0) {
+00411         fprintf(stderr, "ERROR: could not compile statements.\n");
+00412         goto error;
+00413     }
+00414 
+00415     return db;
+00416 
+00417   error:
+00418     sqlite3_close(db->handle);
+00419     free(db);
+00420     return NULL;
+00421 }
+00422 
+00423 static int
+00424 _master_db_close(struct master_db *db)
+00425 {
+00426     if (db->get_files)
+00427         lms_db_finalize_stmt(db->get_files, "get_files");
+00428 
+00429     if (sqlite3_close(db->handle) != SQLITE_OK) {
+00430         fprintf(stderr, "ERROR: clould not close DB (master): %s\n",
+00431                 sqlite3_errmsg(db->handle));
+00432         return -1;
+00433     }
+00434     free(db);
+00435 
+00436     return 0;
+00437 }
+00438 
+00439 static void
+00440 _calc_base(struct lms_file_info *finfo)
+00441 {
+00442     int i;
+00443 
+00444     for (i = finfo->path_len - 1; i >= 0; i--)
+00445         if (finfo->path[i] == '/') {
+00446             finfo->base = i;
+00447             return;
+00448         }
+00449 }
+00450 
+00451 static inline void
+00452 _update_finfo_from_stmt(struct lms_file_info *finfo, sqlite3_stmt *stmt)
+00453 {
+00454     finfo->id = sqlite3_column_int64(stmt, 0);
+00455     finfo->path = sqlite3_column_blob(stmt, 1);
+00456     finfo->path_len = sqlite3_column_bytes(stmt, 1);
+00457     finfo->base = 0;
+00458     finfo->mtime = sqlite3_column_int(stmt, 2);
+00459     finfo->dtime = sqlite3_column_int(stmt, 3);
+00460     finfo->size = sqlite3_column_int(stmt, 4);
+00461 }
+00462 
+00463 static inline void
+00464 _update_finfo_from_stat(struct lms_file_info *finfo, const struct stat *st)
+00465 {
+00466     finfo->mtime = st->st_mtime;
+00467     finfo->size = st->st_size;
+00468     finfo->dtime = 0;
+00469 }
+00470 
+00471 static int
+00472 _check_row(struct master_db *db, struct pinfo *pinfo)
+00473 {
+00474     struct lms_file_info finfo;
+00475     struct stat st;
+00476     unsigned int flags;
+00477     int r, reply;
+00478 
+00479     _update_finfo_from_stmt(&finfo, db->get_files);
+00480 
+00481     flags = 0;
+00482     if (stat(finfo.path, &st) == 0) {
+00483         if (st.st_mtime == finfo.mtime && st.st_size == finfo.size) {
+00484             if (finfo.dtime == 0)
+00485                 return 0;
+00486             else
+00487                 finfo.dtime = 0;
+00488         } else {
+00489             _update_finfo_from_stat(&finfo, &st);
+00490             flags |= COMM_FINFO_FLAG_OUTDATED;
+00491         }
+00492     } else {
+00493         if (finfo.dtime)
+00494             return 0;
+00495         else
+00496             finfo.dtime = time(NULL);
+00497     }
+00498 
+00499     _calc_base(&finfo);
+00500 
+00501     if (_master_send_file(&pinfo->master, finfo, flags) != 0)
+00502         return -1;
+00503 
+00504     r = _master_recv_reply(&pinfo->master, &pinfo->poll, &reply,
+00505                            pinfo->lms->slave_timeout);
+00506     if (r < 0)
+00507         return -2;
+00508     else if (r == 1) {
+00509         fprintf(stderr, "ERROR: slave took too long, restart %d\n",
+00510                 pinfo->child);
+00511         if (lms_restart_slave(pinfo, _slave_work) != 0)
+00512             return -3;
+00513         return 1;
+00514     } else {
+00515         if (reply < 0) {
+00516             /* XXX callback library users to inform error. */
+00517             fprintf(stderr, "ERROR: pid=%d failed to parse \"%s\".\n",
+00518                     getpid(), finfo.path);
+00519             return (-reply) << 8;
+00520         } else
+00521             return reply;
+00522     }
+00523 }
+00524 
+00525 static int
+00526 _init_sync_wait(struct pinfo *pinfo, int restart)
+00527 {
+00528     int r, reply;
+00529 
+00530     do {
+00531         r = _master_recv_reply(&pinfo->master, &pinfo->poll, &reply,
+00532                                pinfo->lms->slave_timeout);
+00533         if (r < 0)
+00534             return -1;
+00535         else if (r == 1 && restart) {
+00536             fprintf(stderr, "ERROR: slave took too long, restart %d\n",
+00537                     pinfo->child);
+00538             if (lms_restart_slave(pinfo, _slave_work) != 0)
+00539                 return -2;
+00540         }
+00541     } while (r != 0 && restart);
+00542 
+00543     return r;
+00544 }
+00545 
+00546 static int
+00547 _master_dummy_send_finish(const struct fds *master)
+00548 {
+00549     return 0;
+00550 }
+00551 
+00552 static int
+00553 _check(struct pinfo *pinfo, int len, char *path)
+00554 {
+00555     char query[PATH_SIZE + 2];
+00556     struct master_db *db;
+00557     int r, ret;
+00558 
+00559     db = _master_db_open(pinfo->lms->db_path);
+00560     if (!db)
+00561         return -1;
+00562 
+00563     memcpy(query, path, len);
+00564     query[len] = '%';
+00565     query[len + 1] = '\0';
+00566     ret = lms_db_get_files(db->get_files, query, len + 1);
+00567     if (ret != 0)
+00568         goto end;
+00569 
+00570     if (lms_create_slave(pinfo, _slave_work) != 0) {
+00571         ret = -2;
+00572         goto end;
+00573     }
+00574     _init_sync_wait(pinfo, 1);
+00575 
+00576     do {
+00577         r = sqlite3_step(db->get_files);
+00578         if (r == SQLITE_ROW) {
+00579             if (_check_row(db, pinfo) < 0) {
+00580                 fprintf(stderr, "ERROR: could not check row.\n");
+00581                 ret = -1;
+00582                 goto finish_slave;
+00583             }
+00584         } else if (r != SQLITE_DONE) {
+00585             fprintf(stderr, "ERROR: could not begin transaction: %s\n",
+00586                     sqlite3_errmsg(db->handle));
+00587             ret = -2;
+00588             goto finish_slave;
+00589         }
+00590     } while (r != SQLITE_DONE);
+00591     ret = 0;
+00592 
+00593   finish_slave:
+00594     _master_send_finish(&pinfo->master);
+00595     _init_sync_wait(pinfo, 0);
+00596     lms_finish_slave(pinfo, _master_dummy_send_finish);
+00597 
+00598   end:
+00599     lms_db_reset_stmt(db->get_files);
+00600     _master_db_close(db);
+00601 
+00602     return ret;
+00603 }
+00604 
+00617 int
+00618 lms_check(lms_t *lms, const char *top_path)
+00619 {
+00620     struct pinfo pinfo;
+00621     int r;
+00622     char path[PATH_SIZE];
+00623 
+00624     if (!lms) {
+00625         r = -1;
+00626         goto end;
+00627     }
+00628 
+00629     if (!top_path) {
+00630         r = -2;
+00631         goto end;
+00632     }
+00633 
+00634     if (lms->is_processing) {
+00635         fprintf(stderr, "ERROR: is already processing.\n");
+00636         r = -3;
+00637         goto end;
+00638     }
+00639 
+00640     if (!lms->parsers) {
+00641         fprintf(stderr, "ERROR: no plugins registered.\n");
+00642         r = -4;
+00643         goto end;
+00644     }
+00645 
+00646     pinfo.lms = lms;
+00647 
+00648     if (lms_create_pipes(&pinfo) != 0) {
+00649         r = -5;
+00650         goto end;
+00651     }
+00652 
+00653     if (realpath(top_path, path) == NULL) {
+00654         perror("realpath");
+00655         r = -6;
+00656         goto close_pipes;
+00657     }
+00658 
+00659     lms->is_processing = 1;
+00660     r = _check(&pinfo, strlen(path), path);
+00661     lms->is_processing = 0;
+00662 
+00663   close_pipes:
+00664     lms_close_pipes(&pinfo);
+00665   end:
+00666     return r;
+00667 }
+

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__check_8c.html b/www/api/lightmediascanner__check_8c.html new file mode 100644 index 0000000..a2da85b --- /dev/null +++ b/www/api/lightmediascanner__check_8c.html @@ -0,0 +1,144 @@ + + +Light Media Scanner: src/lib/lightmediascanner_check.c File Reference + + + + + +
+ +
+

src/lib/lightmediascanner_check.c File Reference

#include <sys/wait.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <dirent.h>
+#include <signal.h>
+#include <time.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "lightmediascanner.h"
+#include "lightmediascanner_private.h"
+#include "lightmediascanner_db_private.h"
+ +

+Include dependency graph for lightmediascanner_check.c:

+ + + +

+Go to the source code of this file. + + + + + + + + + +

Defines

#define _GNU_SOURCE
#define COMM_FINFO_FLAG_OUTDATED   1

Functions

int lms_check (lms_t *lms, const char *top_path)
+


Define Documentation

+ +
+
+ + + + +
#define _GNU_SOURCE
+
+
+ +

+Copyright (C) 2007 by INdT

+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.

+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.

+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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

+

Author:
Gustavo Sverzut Barbieri <gustavo.barbieri@openbossa.org>
+ +

+Definition at line 25 of file lightmediascanner_check.c. +

+

+ +

+
+ + + + +
#define COMM_FINFO_FLAG_OUTDATED   1
+
+
+ +

+ +

+Definition at line 67 of file lightmediascanner_check.c. +

+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int lms_check (lms_t lms,
const char *  top_path 
)
+
+
+ +

+Check consistency of given directory.

+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).

+

Parameters:
+ + + +
lms previously allocated Light Media Scanner instance.
top_path top directory to scan.
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 618 of file lightmediascanner_check.c. +

+References lms::is_processing, pinfo::lms, lms_close_pipes(), lms_create_pipes(), lms::parsers, and PATH_SIZE. +

+Here is the call graph for this function:

+ + + +
+

+


Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.map b/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.map new file mode 100644 index 0000000..d5a36c7 --- /dev/null +++ b/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.map @@ -0,0 +1,2 @@ + + diff --git a/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.md5 b/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.md5 new file mode 100644 index 0000000..9496c78 --- /dev/null +++ b/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.md5 @@ -0,0 +1 @@ +c182c7304ee5dc5f9c382186673e0b3f \ No newline at end of file diff --git a/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.png b/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..126a44b36dcd11f92a17663a96e80e34a70e1291 GIT binary patch literal 666 zcmV;L0%iS)P)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00J^eL_t(&f$fzU z=v$`o8^7@zUx|-241=u?$4PCzN%{1W{Af?$!@rp79fC8MCQTTLv)*a*;UWk+1c%^2 z*C+M)B6{F4%Dr_^!{k_KFcfo0hPU^*0-^apeh^;)PoN{;SSEpLg+-Xf*iFPL=sSf=c|3`L-@USAX;Pe&rJGOE8z; zKV(C~KCz?h{nvhethl4KH`yV+T=lC!%JCO;qD=f=zT{ia_VB-Rlby*Q?*7`J=3`8F zn8{-S{?PdFFUC3tgwcR;7<~i<_yD7N@6aPUlv%%DbyVDgod#}V2(?*&@99|bgDc6e zrawy!Etap%KYQs`lnS7V%-*i&iVh6FH(a= z2QU6w2gX8K|FF;{pJE4y<63uMEa~b$DK7fQG`Q)_4veP$;MN-#UT~JA{w!VTz^K;W zJj6vOm + + + + diff --git a/www/api/lightmediascanner__check_8c__incl.md5 b/www/api/lightmediascanner__check_8c__incl.md5 new file mode 100644 index 0000000..1d92cb1 --- /dev/null +++ b/www/api/lightmediascanner__check_8c__incl.md5 @@ -0,0 +1 @@ +6cd5c7de94121a998b8300cf1a0a053a \ No newline at end of file diff --git a/www/api/lightmediascanner__check_8c__incl.png b/www/api/lightmediascanner__check_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..f09ad05b42164535dd9b57180793d715fe42fb6c GIT binary patch literal 13059 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 oML*v;;`sl0JcL>owfisX + +Light Media Scanner: src/lib/lightmediascanner_db.h Source File + + + + + +
+ +
+

src/lib/lightmediascanner_db.h

Go to the documentation of this file.
00001 
+00021 #ifndef _LIGHTMEDIASCANNER_DB_H_
+00022 #define _LIGHTMEDIASCANNER_DB_H_ 1
+00023 
+00024 #ifdef API
+00025 #undef API
+00026 #endif
+00027 
+00028 #ifdef __GNUC__
+00029 # if __GNUC__ >= 4
+00030 #  define API __attribute__ ((visibility("default")))
+00031 # else
+00032 #  define API
+00033 # endif
+00034 # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+00035 #  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))
+00036 # else
+00037 #  define GNUC_NON_NULL(...)
+00038 # endif
+00039 #else
+00040 #  define API
+00041 #  define GNUC_NON_NULL(...)
+00042 #endif
+00043 
+00044 #include <lightmediascanner_plugin.h>
+00045 #include <lightmediascanner_utils.h>
+00046 
+00047 #ifdef __cplusplus
+00048 extern "C" {
+00049 #endif
+00050 
+00060     /* Image Records */
+00061     struct lms_gps_info {
+00062         double latitude;
+00063         double longitude;
+00064         double altitude;
+00065     };
+00066 
+00067     struct lms_image_info {
+00068         int64_t id;
+00069         struct lms_string_size title;
+00070         struct lms_string_size artist;
+00071         unsigned int date;
+00072         unsigned short width;
+00073         unsigned short height;
+00074         unsigned short orientation;
+00075         struct lms_gps_info gps;
+00076     };
+00077 
+00078     typedef struct lms_db_image lms_db_image_t;
+00079 
+00080     API lms_db_image_t *lms_db_image_new(sqlite3 *db) GNUC_NON_NULL(1);
+00081     API int lms_db_image_start(lms_db_image_t *ldi) GNUC_NON_NULL(1);
+00082     API int lms_db_image_free(lms_db_image_t *ldi) GNUC_NON_NULL(1);
+00083     API int lms_db_image_add(lms_db_image_t *ldi, struct lms_image_info *info) GNUC_NON_NULL(1, 2);
+00084 
+00085     /* Audio Records */
+00086     struct lms_audio_info {
+00087         int64_t id;
+00088         struct lms_string_size title;
+00089         struct lms_string_size artist;
+00090         struct lms_string_size album;
+00091         struct lms_string_size genre;
+00092         unsigned int playcnt;
+00093         unsigned char trackno;
+00094         unsigned char rating;
+00095     };
+00096 
+00097     typedef struct lms_db_audio lms_db_audio_t;
+00098 
+00099     API lms_db_audio_t *lms_db_audio_new(sqlite3 *db) GNUC_NON_NULL(1);
+00100     API int lms_db_audio_start(lms_db_audio_t *lda) GNUC_NON_NULL(1);
+00101     API int lms_db_audio_free(lms_db_audio_t *lda) GNUC_NON_NULL(1);
+00102     API int lms_db_audio_add(lms_db_audio_t *lda, struct lms_audio_info *info) GNUC_NON_NULL(1, 2);
+00103 
+00104     /* Video Records */
+00105     struct lms_video_info {
+00106         int64_t id;
+00107         struct lms_string_size title;
+00108         struct lms_string_size artist;
+00109     };
+00110 
+00111     typedef struct lms_db_video lms_db_video_t;
+00112 
+00113     API lms_db_video_t *lms_db_video_new(sqlite3 *db) GNUC_NON_NULL(1);
+00114     API int lms_db_video_start(lms_db_video_t *ldv) GNUC_NON_NULL(1);
+00115     API int lms_db_video_free(lms_db_video_t *ldv) GNUC_NON_NULL(1);
+00116     API int lms_db_video_add(lms_db_video_t *ldv, struct lms_video_info *info) GNUC_NON_NULL(1, 2);
+00117 
+00118     /* Playlist Records */
+00119     struct lms_playlist_info {
+00120         int64_t id;
+00121         struct lms_string_size title;
+00122         unsigned int n_entries;
+00123     };
+00124 
+00125     typedef struct lms_db_playlist lms_db_playlist_t;
+00126 
+00127     API lms_db_playlist_t *lms_db_playlist_new(sqlite3 *db) GNUC_NON_NULL(1);
+00128     API int lms_db_playlist_start(lms_db_playlist_t *ldp) GNUC_NON_NULL(1);
+00129     API int lms_db_playlist_free(lms_db_playlist_t *ldp) GNUC_NON_NULL(1);
+00130     API int lms_db_playlist_add(lms_db_playlist_t *ldp, struct lms_playlist_info *info) GNUC_NON_NULL(1, 2);
+00131 
+00136 #ifdef __cplusplus
+00137 }
+00138 #endif
+00139 #endif /* _LIGHTMEDIASCANNER_DB_H_ */
+

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__db_8h.html b/www/api/lightmediascanner__db_8h.html new file mode 100644 index 0000000..7bfe1c9 --- /dev/null +++ b/www/api/lightmediascanner__db_8h.html @@ -0,0 +1,165 @@ + + +Light Media Scanner: src/lib/lightmediascanner_db.h File Reference + + + + + +
+ +
+

src/lib/lightmediascanner_db.h File Reference

#include <lightmediascanner_plugin.h>
+#include <lightmediascanner_utils.h>
+ +

+Include dependency graph for lightmediascanner_db.h:

+ + + +

+This graph shows which files directly or indirectly include this file:

+ + + +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  lms_gps_info
struct  lms_image_info
struct  lms_audio_info
struct  lms_video_info
struct  lms_playlist_info

Defines

#define _LIGHTMEDIASCANNER_DB_H_   1
#define API
#define GNUC_NON_NULL(...)

Typedefs

typedef lms_db_image lms_db_image_t
typedef lms_db_audio lms_db_audio_t
typedef lms_db_video lms_db_video_t
typedef lms_db_playlist lms_db_playlist_t

Functions

API lms_db_image_tlms_db_image_new (sqlite3 *db) GNUC_NON_NULL(1)
API int lms_db_image_start (lms_db_image_t *ldi) GNUC_NON_NULL(1)
API int lms_db_image_free (lms_db_image_t *ldi) GNUC_NON_NULL(1)
API int lms_db_image_add (lms_db_image_t *ldi, struct lms_image_info *info) GNUC_NON_NULL(1
API lms_db_audio_tlms_db_audio_new (sqlite3 *db) GNUC_NON_NULL(1)
API int lms_db_audio_start (lms_db_audio_t *lda) GNUC_NON_NULL(1)
API int lms_db_audio_free (lms_db_audio_t *lda) GNUC_NON_NULL(1)
API int lms_db_audio_add (lms_db_audio_t *lda, struct lms_audio_info *info) GNUC_NON_NULL(1
API lms_db_video_tlms_db_video_new (sqlite3 *db) GNUC_NON_NULL(1)
API int lms_db_video_start (lms_db_video_t *ldv) GNUC_NON_NULL(1)
API int lms_db_video_free (lms_db_video_t *ldv) GNUC_NON_NULL(1)
API int lms_db_video_add (lms_db_video_t *ldv, struct lms_video_info *info) GNUC_NON_NULL(1
API lms_db_playlist_tlms_db_playlist_new (sqlite3 *db) GNUC_NON_NULL(1)
API int lms_db_playlist_start (lms_db_playlist_t *ldp) GNUC_NON_NULL(1)
API int lms_db_playlist_free (lms_db_playlist_t *ldp) GNUC_NON_NULL(1)
API int lms_db_playlist_add (lms_db_playlist_t *ldp, struct lms_playlist_info *info) GNUC_NON_NULL(1
+


Define Documentation

+ +
+
+ + + + +
#define _LIGHTMEDIASCANNER_DB_H_   1
+
+
+ +

+Copyright (C) 2007 by INdT

+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.

+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.

+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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

+

Author:
Gustavo Sverzut Barbieri <gustavo.barbieri@openbossa.org>
+ +

+Definition at line 22 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
#define API
+
+
+ +

+ +

+Definition at line 40 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + + + + + + +
#define GNUC_NON_NULL ( ...   ) 
+
+
+ +

+ +

+Definition at line 41 of file lightmediascanner_db.h. +

+

+


Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__db_8h__dep__incl.map b/www/api/lightmediascanner__db_8h__dep__incl.map new file mode 100644 index 0000000..519c048 --- /dev/null +++ b/www/api/lightmediascanner__db_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/www/api/lightmediascanner__db_8h__dep__incl.md5 b/www/api/lightmediascanner__db_8h__dep__incl.md5 new file mode 100644 index 0000000..753a782 --- /dev/null +++ b/www/api/lightmediascanner__db_8h__dep__incl.md5 @@ -0,0 +1 @@ +754b6d086ad7fe3e71ecb28b280bf3a8 \ No newline at end of file diff --git a/www/api/lightmediascanner__db_8h__dep__incl.png b/www/api/lightmediascanner__db_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..c2cedd239d9abdc700a6e115b926be9c7a1208ab GIT binary patch literal 1981 zcmV;u2SWIXP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00&h`L_t(|ob8~E- zAla@-UX$^fj5lRI2QL_+fGlMec}t{0-VR2$1-A%<<2T4s9ds_sxU#c8r~B%D3#m{F z_!MrAHzXa<4jfmyzd!1{;Edon0F4&>d6sfnI!6wcQfT`wreZ0fu&HRT%>UMaeQh8M z|HPZ6QeKF>XmRiB5P5Nzpd`FuKk4%tGLKp3b$Yh8&u1dWm6lPN1_?td&tfFsQ z5{o7&<9Sn`C0>|2GVPLBbZfk5ytn}H4wvf3cR|7Vq=Pt)VGicG{+R`HgGZ;eCqGHp2T5f;CO>ayQADsPoF17Dby^ zmR6fr*tkZOSFn|uM2+_$*-A~K#H&QB#j8cD!~0M;ZiC44s<|?XIIk+LIIpHFqlohA zx-yC+uRg6LuevLvi19ueFs_l~ZNZnF2=OlZGFLzInpi2`l|$DGsGjSS;9c`&%dh%H zA3yJUyKK2tFX&_E-Ds#Rv+5;%+`L;SUCXO_Q6Dew_BDp(RK22)m3QYF!!oK~)5poX zca35BRIlperube(>waDI#I035ufH}+U5nQ(q&b*0sh2QKf&2sIH1=OC!D|P`RFn79`2H} zyE(kn3FoiLJL0}ESZ`~nKB%t_@AF!`kA2>yUu^}|N5tu?!Rv81d0&5hiiVk?SmSxS z5Bsq_?(?7ZUhdi6puJ9m#-;v<&<)3WiGc(WsV%`n0p*4HVUHC({IxIrGZ znDO(rL@Q|D>+t&a>PozLd94geBE#EEID;5(E3(Wx{0!hed&p9K_)K&9JUhIhW3;dz zl~2}q`;52GcvI$c@Ip@%kfoM+cLWI=1j19AWwE%@^+<+2Qp9DXQ;wjW|DmJ$lH^LalS;dK|2 zGVPL-7h2*)YQaK#6%SlM*BGXb@6d1F25*7D-nn)`hN?y!7Pgi2(28TKD^Re~zYz^~cg6g!V%lV*OV^VZ`nvyPipG zt?`tVu@tXkX|@R+OWT^`Wm`w+0-f;eNGNr9O+kxvD&B(e-&gr!-nYj0znS-)_>FJo z#nJkMmlR*k`|tz2M>hFtUOM3%G4axD<~|IVW^AUE|31%I(rpj}3vm;-K|Nj?A39*- zC0-v%8F;7A&k#+T=iJqh@=}C*wfN^?*n8xI>JS@8T5omim(1g5ruf=6@~&M&3NYH~RBDMe)!u zMZx-T;TX(5j|iTMM&4-ymiexWfWvI&fh_z31v{_sQe>|Wb`Q^VOkw`GOMLk+yyFHu zyhXrt{K6h@e04$^8y*p2OaOzX?ZaDQxc~>LN&dR$6d|KWW z;Pdh>x6_~Y^1mZOyzLBki_L%4z|?gp_k3=A(t?Ta`50M6-Kp>SRJrA1^W~bW&4=vd zTJv3-%gtwQ)SO!JeFQ4Nn(v#q)cY4uF7fuis-V(`p-G@G}$b|Jibavc;HGXnOLWH}( zg!RPR*#_)uL0873f_w9ZeHOE2&=n!g)1Pe?&cM&0NcpPvS{;a$jy6hxg78RV-o`2BB|@P P00000NkvXXu0mjf2d4<@ literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db_8h__incl.map b/www/api/lightmediascanner__db_8h__incl.map new file mode 100644 index 0000000..96a24ef --- /dev/null +++ b/www/api/lightmediascanner__db_8h__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/www/api/lightmediascanner__db_8h__incl.md5 b/www/api/lightmediascanner__db_8h__incl.md5 new file mode 100644 index 0000000..b359039 --- /dev/null +++ b/www/api/lightmediascanner__db_8h__incl.md5 @@ -0,0 +1 @@ +86eae6935af25b0833e6ae400acdd942 \ No newline at end of file diff --git a/www/api/lightmediascanner__db_8h__incl.png b/www/api/lightmediascanner__db_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..55b1e5940a0d53a12301597dc977c3c1cc4695bb GIT binary patch literal 2525 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 literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__audio_8c-source.html b/www/api/lightmediascanner__db__audio_8c-source.html new file mode 100644 index 0000000..a429d81 --- /dev/null +++ b/www/api/lightmediascanner__db__audio_8c-source.html @@ -0,0 +1,648 @@ + + +Light Media Scanner: src/lib/lightmediascanner_db_audio.c Source File + + + + + +
+ +
+

src/lib/lightmediascanner_db_audio.c

Go to the documentation of this file.
00001 #include <lightmediascanner_db.h>
+00002 #include "lightmediascanner_db_private.h"
+00003 #include <stdlib.h>
+00004 #include <stdio.h>
+00005 
+00006 struct lms_db_audio {
+00007     sqlite3 *db;
+00008     sqlite3_stmt *insert_audio;
+00009     sqlite3_stmt *insert_artist;
+00010     sqlite3_stmt *insert_album;
+00011     sqlite3_stmt *insert_genre;
+00012     sqlite3_stmt *get_artist;
+00013     sqlite3_stmt *get_album;
+00014     sqlite3_stmt *get_genre;
+00015     unsigned int _references;
+00016     unsigned int _is_started:1;
+00017 };
+00018 
+00019 static struct lms_db_cache _cache = {0, NULL};
+00020 
+00021 static int
+00022 _db_create(sqlite3 *db, const char *name, const char *sql)
+00023 {
+00024     char *err;
+00025     int r;
+00026 
+00027     r = sqlite3_exec(db, sql, NULL, NULL, &err);
+00028     if (r != SQLITE_OK) {
+00029         fprintf(stderr, "ERROR: could not create \"%s\": %s\n", name, err);
+00030         sqlite3_free(err);
+00031         return -1;
+00032     }
+00033 
+00034     return 0;
+00035 }
+00036 
+00037 static int
+00038 _db_table_updater_audios_0(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run) {
+00039     int ret;
+00040 
+00041     ret = _db_create(db, "audios",
+00042         "CREATE TABLE IF NOT EXISTS audios ("
+00043         "id INTEGER PRIMARY KEY, "
+00044         "title TEXT, "
+00045         "album_id INTEGER, "
+00046         "genre_id INTEGER, "
+00047         "trackno INTEGER, "
+00048         "rating INTEGER, "
+00049         "playcnt INTEGER"
+00050         ")");
+00051     if (ret != 0)
+00052         goto done;
+00053 
+00054     ret = _db_create(db, "audios_title_idx",
+00055         "CREATE INDEX IF NOT EXISTS "
+00056         "audios_title_idx ON audios (title)");
+00057     if (ret != 0)
+00058         goto done;
+00059 
+00060     ret = _db_create(db, "audios_album_idx",
+00061         "CREATE INDEX IF NOT EXISTS "
+00062         "audios_album_idx ON audios (album_id)");
+00063     if (ret != 0)
+00064         goto done;
+00065 
+00066     ret = _db_create(db, "audios_genre_idx",
+00067         "CREATE INDEX IF NOT EXISTS "
+00068         "audios_genre_idx ON audios (genre_id)");
+00069     if (ret != 0)
+00070         goto done;
+00071 
+00072     ret = _db_create(db, "audios_trackno_idx",
+00073         "CREATE INDEX IF NOT EXISTS "
+00074         "audios_trackno_idx ON audios (trackno)");
+00075     if (ret != 0)
+00076         goto done;
+00077 
+00078     ret = _db_create(db, "audios_playcnt_idx",
+00079         "CREATE INDEX IF NOT EXISTS "
+00080         "audios_playcnt_idx ON audios (playcnt)");
+00081     if (ret != 0)
+00082         goto done;
+00083 
+00084     ret = lms_db_create_trigger_if_not_exists(db,
+00085         "delete_audios_on_files_deleted "
+00086         "DELETE ON files FOR EACH ROW BEGIN"
+00087         "   DELETE FROM audios WHERE id = OLD.id; END;");
+00088     if (ret != 0)
+00089         goto done;
+00090 
+00091     ret = lms_db_create_trigger_if_not_exists(db,
+00092         "delete_files_on_audios_deleted "
+00093         "DELETE ON audios FOR EACH ROW BEGIN"
+00094         " DELETE FROM files WHERE id = OLD.id; END;");
+00095 
+00096   done:
+00097     return ret;
+00098 }
+00099 
+00100 static lms_db_table_updater_t _db_table_updater_audios[] = {
+00101     _db_table_updater_audios_0
+00102 };
+00103 
+00104 static int
+00105 _db_table_updater_audio_artists_0(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run) {
+00106     int ret;
+00107 
+00108     ret = _db_create(db, "audio_artists",
+00109         "CREATE TABLE IF NOT EXISTS audio_artists ("
+00110         "id INTEGER PRIMARY KEY, "
+00111         "name TEXT UNIQUE"
+00112         ")");
+00113     if (ret != 0)
+00114         goto done;
+00115 
+00116     ret = _db_create(db, "audio_artists_name_idx",
+00117         "CREATE INDEX IF NOT EXISTS "
+00118         "audio_artists_name_idx ON audio_artists (name)");
+00119 
+00120   done:
+00121     return ret;
+00122 }
+00123 
+00124 static lms_db_table_updater_t _db_table_updater_audio_artists[] = {
+00125     _db_table_updater_audio_artists_0
+00126 };
+00127 
+00128 static int
+00129 _db_table_updater_audio_albums_0(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run) {
+00130     int ret;
+00131 
+00132     ret = _db_create(db, "audio_albums",
+00133         "CREATE TABLE IF NOT EXISTS audio_albums ("
+00134         "id INTEGER PRIMARY KEY, "
+00135         "artist_id INTEGER, "
+00136         "name TEXT"
+00137         ")");
+00138     if (ret != 0)
+00139         goto done;
+00140 
+00141     ret = _db_create(db, "audio_albums_name_idx",
+00142         "CREATE INDEX IF NOT EXISTS "
+00143         "audio_albums_name_idx ON audio_albums (name)");
+00144     if (ret != 0)
+00145         goto done;
+00146 
+00147     ret = _db_create(db, "audio_albums_artist_idx",
+00148         "CREATE INDEX IF NOT EXISTS "
+00149         "audio_albums_artist_idx ON audio_albums (artist_id)");
+00150     if (ret != 0)
+00151         goto done;
+00152 
+00153     ret = lms_db_create_trigger_if_not_exists(db,
+00154         "delete_audios_on_albums_deleted "
+00155         "DELETE ON audio_albums FOR EACH ROW BEGIN"
+00156         " DELETE FROM audios WHERE album_id = OLD.id; END;");
+00157     if (ret != 0)
+00158         goto done;
+00159 
+00160     ret = lms_db_create_trigger_if_not_exists(db,
+00161         "delete_audio_albums_on_artists_deleted "
+00162         "DELETE ON audio_artists FOR EACH ROW BEGIN"
+00163         " DELETE FROM audio_albums WHERE artist_id = OLD.id; END;");
+00164 
+00165   done:
+00166     return ret;
+00167 }
+00168 
+00169 static lms_db_table_updater_t _db_table_updater_audio_albums[] = {
+00170     _db_table_updater_audio_albums_0
+00171 };
+00172 
+00173 static int
+00174 _db_table_updater_audio_genres_0(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run) {
+00175     int ret;
+00176 
+00177     ret = _db_create(db, "audio_genres",
+00178         "CREATE TABLE IF NOT EXISTS audio_genres ("
+00179         "id INTEGER PRIMARY KEY, "
+00180         "name TEXT UNIQUE"
+00181         ")");
+00182     if (ret != 0)
+00183         goto done;
+00184 
+00185     ret = _db_create(db, "audio_genres_name_idx",
+00186         "CREATE INDEX IF NOT EXISTS "
+00187         "audio_albums_name_idx ON audio_albums (name)");
+00188     if (ret != 0)
+00189         goto done;
+00190 
+00191     ret = lms_db_create_trigger_if_not_exists(db,
+00192         "delete_audios_on_genres_deleted "
+00193         "DELETE ON audio_genres FOR EACH ROW BEGIN"
+00194         " DELETE FROM audios WHERE genre_id = OLD.id; END;");
+00195 
+00196   done:
+00197     return ret;
+00198 }
+00199 
+00200 static lms_db_table_updater_t _db_table_updater_audio_genres[] = {
+00201     _db_table_updater_audio_genres_0
+00202 };
+00203 
+00204 #define _DB_T_UPDATE(db, name, array)                                   \
+00205     lms_db_table_update_if_required(db, name, LMS_ARRAY_SIZE(array), array)
+00206 
+00207 static int
+00208 _db_create_tables_if_required(sqlite3 *db)
+00209 {
+00210     int ret;
+00211 
+00212     ret = _DB_T_UPDATE(db, "audios", _db_table_updater_audios);
+00213     if (ret != 0)
+00214         goto done;
+00215 
+00216     ret = _DB_T_UPDATE(db, "audio_artists", _db_table_updater_audio_artists);
+00217     if (ret != 0)
+00218         goto done;
+00219 
+00220     ret = _DB_T_UPDATE(db, "audio_albums", _db_table_updater_audio_albums);
+00221     if (ret != 0)
+00222         goto done;
+00223 
+00224     ret = _DB_T_UPDATE(db, "audio_genres", _db_table_updater_audio_genres);
+00225 
+00226   done:
+00227     return ret;
+00228 }
+00229 
+00230 #undef _DB_T_UPDATE
+00231 
+00246 lms_db_audio_t *
+00247 lms_db_audio_new(sqlite3 *db)
+00248 {
+00249     lms_db_audio_t *lda;
+00250     void *p;
+00251 
+00252     if (lms_db_cache_get(&_cache, db, &p) == 0) {
+00253         lda = p;
+00254         lda->_references++;
+00255         return lda;
+00256     }
+00257 
+00258     if (!db)
+00259         return NULL;
+00260 
+00261     if (_db_create_tables_if_required(db) != 0) {
+00262         fprintf(stderr, "ERROR: could not create tables.\n");
+00263         return NULL;
+00264     }
+00265 
+00266     lda = calloc(1, sizeof(lms_db_audio_t));
+00267     lda->_references = 1;
+00268     lda->db = db;
+00269 
+00270     if (lms_db_cache_add(&_cache, db, lda) != 0) {
+00271         lms_db_audio_free(lda);
+00272         return NULL;
+00273     }
+00274 
+00275     return lda;
+00276 }
+00277 
+00290 int
+00291 lms_db_audio_start(lms_db_audio_t *lda)
+00292 {
+00293     if (!lda)
+00294         return -1;
+00295     if (lda->_is_started)
+00296         return 0;
+00297 
+00298     lda->insert_audio = lms_db_compile_stmt(lda->db,
+00299         "INSERT OR REPLACE INTO audios "
+00300         "(id, title, album_id, genre_id, trackno, rating, playcnt) "
+00301         "VALUES (?, ?, ?, ?, ?, ?, ?)");
+00302     if (!lda->insert_audio)
+00303         return -2;
+00304 
+00305     lda->insert_artist = lms_db_compile_stmt(lda->db,
+00306         "INSERT INTO audio_artists (name) VALUES (?)");
+00307     if (!lda->insert_artist)
+00308         return -3;
+00309 
+00310     lda->insert_album = lms_db_compile_stmt(lda->db,
+00311         "INSERT INTO audio_albums (artist_id, name) VALUES (?, ?)");
+00312     if (!lda->insert_album)
+00313         return -4;
+00314 
+00315     lda->insert_genre = lms_db_compile_stmt(lda->db,
+00316         "INSERT INTO audio_genres (name) VALUES (?)");
+00317     if (!lda->insert_genre)
+00318         return -5;
+00319 
+00320     lda->get_artist = lms_db_compile_stmt(lda->db,
+00321         "SELECT id FROM audio_artists WHERE name = ? LIMIT 1");
+00322     if (!lda->get_artist)
+00323         return -6;
+00324 
+00325     lda->get_album = lms_db_compile_stmt(lda->db,
+00326         "SELECT id FROM audio_albums WHERE name = ? AND artist_id = ? LIMIT 1");
+00327     if (!lda->get_album)
+00328         return -7;
+00329 
+00330     lda->get_genre = lms_db_compile_stmt(lda->db,
+00331         "SELECT id FROM audio_genres WHERE name = ? LIMIT 1");
+00332     if (!lda->get_genre)
+00333         return -8;
+00334 
+00335     lda->_is_started = 1;
+00336     return 0;
+00337 }
+00338 
+00351 int
+00352 lms_db_audio_free(lms_db_audio_t *lda)
+00353 {
+00354     int r;
+00355 
+00356     if (!lda)
+00357         return -1;
+00358     if (lda->_references == 0) {
+00359         fprintf(stderr, "ERROR: over-called lms_db_audio_free(%p)\n", lda);
+00360         return -1;
+00361     }
+00362 
+00363     lda->_references--;
+00364     if (lda->_references > 0)
+00365         return 0;
+00366 
+00367     if (lda->insert_audio)
+00368         lms_db_finalize_stmt(lda->insert_audio, "insert_audio");
+00369 
+00370     if (lda->insert_artist)
+00371         lms_db_finalize_stmt(lda->insert_artist, "insert_artist");
+00372 
+00373     if (lda->insert_album)
+00374         lms_db_finalize_stmt(lda->insert_album, "insert_album");
+00375 
+00376     if (lda->insert_genre)
+00377         lms_db_finalize_stmt(lda->insert_genre, "insert_genre");
+00378 
+00379     if (lda->get_artist)
+00380         lms_db_finalize_stmt(lda->get_artist, "get_artist");
+00381 
+00382     if (lda->get_album)
+00383         lms_db_finalize_stmt(lda->get_album, "get_album");
+00384 
+00385     if (lda->get_genre)
+00386         lms_db_finalize_stmt(lda->get_genre, "get_genre");
+00387 
+00388     r = lms_db_cache_del(&_cache, lda->db, lda);
+00389     free(lda);
+00390 
+00391     return r;
+00392 }
+00393 
+00394 static int
+00395 _db_get_id_by_name(sqlite3_stmt *stmt, const struct lms_string_size *name, int64_t *id)
+00396 {
+00397     int r, ret;
+00398 
+00399     ret = lms_db_bind_text(stmt, 1, name->str, name->len);
+00400     if (ret != 0)
+00401         goto done;
+00402 
+00403     r = sqlite3_step(stmt);
+00404     if (r == SQLITE_DONE) {
+00405         ret = 1;
+00406         goto done;
+00407     }
+00408 
+00409     if (r != SQLITE_ROW) {
+00410         fprintf(stderr, "ERROR: could not get id by name: %s\n",
+00411                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+00412         ret = -2;
+00413         goto done;
+00414     }
+00415 
+00416     *id = sqlite3_column_int64(stmt, 0);
+00417     ret = 0;
+00418 
+00419   done:
+00420     lms_db_reset_stmt(stmt);
+00421 
+00422     return ret;
+00423 
+00424 }
+00425 static int
+00426 _db_insert_name(sqlite3_stmt *stmt, const struct lms_string_size *name, int64_t *id)
+00427 {
+00428     int r, ret;
+00429 
+00430     ret = lms_db_bind_text(stmt, 1, name->str, name->len);
+00431     if (ret != 0)
+00432         goto done;
+00433 
+00434     r = sqlite3_step(stmt);
+00435     if (r != SQLITE_DONE) {
+00436         fprintf(stderr, "ERROR: could not insert name: %s\n",
+00437                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+00438         ret = -2;
+00439         goto done;
+00440     }
+00441 
+00442     *id = sqlite3_last_insert_rowid(sqlite3_db_handle(stmt));
+00443     ret = 0;
+00444 
+00445   done:
+00446     lms_db_reset_stmt(stmt);
+00447 
+00448     return ret;
+00449 }
+00450 
+00451 static int
+00452 _db_get_artist(lms_db_audio_t *lda, const struct lms_audio_info *info, int64_t *artist_id)
+00453 {
+00454     return _db_get_id_by_name(lda->get_artist, &info->artist, artist_id);
+00455 }
+00456 
+00457 static int
+00458 _db_insert_artist(lms_db_audio_t *lda, const struct lms_audio_info *info, int64_t *artist_id)
+00459 {
+00460     int r;
+00461 
+00462     if (!info->artist.str) /* fast path for unknown artist */
+00463         return 1;
+00464 
+00465     r =_db_get_artist(lda, info, artist_id);
+00466     if (r == 0)
+00467         return 0;
+00468     else if (r < 0)
+00469         return -1;
+00470 
+00471     return _db_insert_name(lda->insert_artist, &info->artist, artist_id);
+00472 }
+00473 
+00474 static int
+00475 _db_get_album(lms_db_audio_t *lda, const struct lms_audio_info *info, int64_t *artist_id, int64_t *album_id)
+00476 {
+00477     sqlite3_stmt *stmt;
+00478     int r, ret;
+00479 
+00480     stmt = lda->get_album;
+00481 
+00482     ret = lms_db_bind_text(stmt, 1, info->album.str, info->album.len);
+00483     if (ret != 0)
+00484         goto done;
+00485 
+00486     ret = lms_db_bind_int64_or_null(stmt, 2, artist_id);
+00487     if (ret != 0)
+00488         goto done;
+00489 
+00490     r = sqlite3_step(stmt);
+00491     if (r == SQLITE_DONE) {
+00492         ret = 1;
+00493         goto done;
+00494     }
+00495 
+00496     if (r != SQLITE_ROW) {
+00497         fprintf(stderr, "ERROR: could not get album from table: %s\n",
+00498                 sqlite3_errmsg(lda->db));
+00499         ret = -2;
+00500         goto done;
+00501     }
+00502 
+00503     *album_id = sqlite3_column_int64(stmt, 0);
+00504     ret = 0;
+00505 
+00506   done:
+00507     lms_db_reset_stmt(stmt);
+00508 
+00509     return ret;
+00510 
+00511 }
+00512 
+00513 static int
+00514 _db_insert_album(lms_db_audio_t *lda, const struct lms_audio_info *info, int64_t *album_id)
+00515 {
+00516     int r, ret, ret_artist;
+00517     int64_t artist_id;
+00518     sqlite3_stmt *stmt;
+00519 
+00520     if (!info->album.str) /* fast path for unknown album */
+00521         return 1;
+00522 
+00523     ret_artist = _db_insert_artist(lda, info, &artist_id);
+00524     if (ret_artist < 0)
+00525         return -1;
+00526 
+00527     r =_db_get_album(lda, info,
+00528                      (ret_artist == 0) ? &artist_id : NULL,
+00529                      album_id);
+00530     if (r == 0)
+00531         return 0;
+00532     else if (r < 0)
+00533         return -1;
+00534 
+00535     stmt = lda->insert_album;
+00536     ret = lms_db_bind_int64_or_null(stmt, 1,
+00537                                     (ret_artist == 0) ? &artist_id : NULL);
+00538     if (ret != 0)
+00539         goto done;
+00540 
+00541     ret = lms_db_bind_text(stmt, 2, info->album.str, info->album.len);
+00542     if (ret != 0)
+00543         goto done;
+00544 
+00545     r = sqlite3_step(stmt);
+00546     if (r != SQLITE_DONE) {
+00547         fprintf(stderr, "ERROR: could not insert audio album: %s\n",
+00548                 sqlite3_errmsg(lda->db));
+00549         ret = -3;
+00550         goto done;
+00551     }
+00552 
+00553     *album_id = sqlite3_last_insert_rowid(lda->db);
+00554     ret = 0;
+00555 
+00556   done:
+00557     lms_db_reset_stmt(stmt);
+00558 
+00559     return ret;
+00560 }
+00561 
+00562 static int
+00563 _db_get_genre(lms_db_audio_t *lda, const struct lms_audio_info *info, int64_t *genre_id)
+00564 {
+00565     return _db_get_id_by_name(lda->get_genre, &info->genre, genre_id);
+00566 }
+00567 
+00568 static int
+00569 _db_insert_genre(lms_db_audio_t *lda, const struct lms_audio_info *info, int64_t *genre_id)
+00570 {
+00571     int r;
+00572 
+00573     if (!info->genre.str) /* fast path for unknown genre */
+00574         return 1;
+00575 
+00576     r =_db_get_genre(lda, info, genre_id);
+00577     if (r == 0)
+00578         return 0;
+00579     else if (r < 0)
+00580         return -1;
+00581 
+00582     return _db_insert_name(lda->insert_genre, &info->genre, genre_id);
+00583 }
+00584 
+00585 static int
+00586 _db_insert_audio(lms_db_audio_t *lda, const struct lms_audio_info *info, int64_t *album_id, int64_t *genre_id)
+00587 {
+00588     sqlite3_stmt *stmt;
+00589     int r, ret;
+00590 
+00591     stmt = lda->insert_audio;
+00592     ret = lms_db_bind_int64(stmt, 1, info->id);
+00593     if (ret != 0)
+00594         goto done;
+00595 
+00596     ret = lms_db_bind_text(stmt, 2, info->title.str, info->title.len);
+00597     if (ret != 0)
+00598         goto done;
+00599 
+00600     ret = lms_db_bind_int64_or_null(stmt, 3, album_id);
+00601     if (ret != 0)
+00602         goto done;
+00603 
+00604     ret = lms_db_bind_int64_or_null(stmt, 4, genre_id);
+00605     if (ret != 0)
+00606         goto done;
+00607 
+00608     ret = lms_db_bind_int(stmt, 5, info->trackno);
+00609     if (ret != 0)
+00610         goto done;
+00611 
+00612     ret = lms_db_bind_int(stmt, 6, info->rating);
+00613     if (ret != 0)
+00614         goto done;
+00615 
+00616     ret = lms_db_bind_int(stmt, 7, info->playcnt);
+00617     if (ret != 0)
+00618         goto done;
+00619 
+00620     r = sqlite3_step(stmt);
+00621     if (r != SQLITE_DONE) {
+00622         fprintf(stderr, "ERROR: could not insert audio info: %s\n",
+00623                 sqlite3_errmsg(lda->db));
+00624         ret = -8;
+00625         goto done;
+00626     }
+00627 
+00628     ret = 0;
+00629 
+00630   done:
+00631     lms_db_reset_stmt(stmt);
+00632 
+00633     return ret;
+00634 }
+00635 
+00647 int
+00648 lms_db_audio_add(lms_db_audio_t *lda, struct lms_audio_info *info)
+00649 {
+00650     int64_t album_id, genre_id;
+00651     int ret_album, ret_genre;
+00652 
+00653     if (!lda)
+00654         return -1;
+00655     if (!info)
+00656         return -2;
+00657     if (info->id < 1)
+00658         return -3;
+00659 
+00660     ret_album = _db_insert_album(lda, info, &album_id);
+00661     if (ret_album < 0)
+00662         return -4;
+00663 
+00664     ret_genre = _db_insert_genre(lda, info, &genre_id);
+00665     if (ret_genre < 0)
+00666         return -5;
+00667 
+00668     return _db_insert_audio(lda, info,
+00669                             (ret_album == 0) ? &album_id : NULL,
+00670                             (ret_genre == 0) ? &genre_id : NULL);
+00671 }
+

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__db__audio_8c.html b/www/api/lightmediascanner__db__audio_8c.html new file mode 100644 index 0000000..cbf4fae --- /dev/null +++ b/www/api/lightmediascanner__db__audio_8c.html @@ -0,0 +1,124 @@ + + +Light Media Scanner: src/lib/lightmediascanner_db_audio.c File Reference + + + + + +
+ +
+

src/lib/lightmediascanner_db_audio.c File Reference

#include <lightmediascanner_db.h>
+#include "lightmediascanner_db_private.h"
+#include <stdlib.h>
+#include <stdio.h>
+ +

+Include dependency graph for lightmediascanner_db_audio.c:

+ + + +

+Go to the source code of this file. + + + + + + + + + + + + + +

Defines

#define _DB_T_UPDATE(db, name, array)   lms_db_table_update_if_required(db, name, LMS_ARRAY_SIZE(array), array)

Functions

lms_db_audio_tlms_db_audio_new (sqlite3 *db)
int lms_db_audio_start (lms_db_audio_t *lda)
int lms_db_audio_free (lms_db_audio_t *lda)
int lms_db_audio_add (lms_db_audio_t *lda, struct lms_audio_info *info)
+


Define Documentation

+ +
+
+ + + + + + + + + + + + + + + +
#define _DB_T_UPDATE (db,
name,
array   )    lms_db_table_update_if_required(db, name, LMS_ARRAY_SIZE(array), array)
+
+
+ +

+ +

+Definition at line 204 of file lightmediascanner_db_audio.c. +

+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int lms_db_audio_add (lms_db_audio_t lda,
struct lms_audio_info info 
)
+
+
+ +

+Add audio file to DB.

+This is usually called from plugin's parse() callback.

+

Parameters:
+ + + +
lda handle returned by lms_db_audio_new().
info audio information to store.
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 648 of file lightmediascanner_db_audio.c. +

+References lms_audio_info::id. +

+

+


Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__db__audio_8c__incl.map b/www/api/lightmediascanner__db__audio_8c__incl.map new file mode 100644 index 0000000..ddf4717 --- /dev/null +++ b/www/api/lightmediascanner__db__audio_8c__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/www/api/lightmediascanner__db__audio_8c__incl.md5 b/www/api/lightmediascanner__db__audio_8c__incl.md5 new file mode 100644 index 0000000..71f8bc2 --- /dev/null +++ b/www/api/lightmediascanner__db__audio_8c__incl.md5 @@ -0,0 +1 @@ +4c77f05e70422b3473612da15f99cfc5 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__audio_8c__incl.png b/www/api/lightmediascanner__db__audio_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..bd1c10db868e1aa54be338cab1a0b0679edb98a0 GIT binary patch literal 3879 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 HIY<2$GV##) literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__common_8c-source.html b/www/api/lightmediascanner__db__common_8c-source.html new file mode 100644 index 0000000..02eabde --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c-source.html @@ -0,0 +1,795 @@ + + +Light Media Scanner: src/lib/lightmediascanner_db_common.c Source File + + + + + +
+ +
+

src/lib/lightmediascanner_db_common.c

Go to the documentation of this file.
00001 #include "lightmediascanner_db_private.h"
+00002 #include <stdlib.h>
+00003 #include <stdio.h>
+00004 #include <string.h>
+00005 
+00006 #if SQLITE_VERSION_NUMBER < 3003009
+00007 int
+00008 sqlite3_prepare_v2(sqlite3 *db, const char *sql, int len, sqlite3_stmt **stmt, const char **tail)
+00009 {
+00010     return sqlite3_prepare(db, sql, len, stmt, tail);
+00011 }
+00012 #endif /* SQLITE_VERSION_NUMBER < 3003009 */
+00013 
+00014 #if SQLITE_VERSION_NUMBER < 3003007
+00015 int
+00016 sqlite3_clear_bindings(sqlite3_stmt *stmt)
+00017 {
+00018     int i, last;
+00019     int rc;
+00020 
+00021     rc = SQLITE_OK;
+00022     last = sqlite3_bind_parameter_count(stmt);
+00023     for(i = 1; rc == SQLITE_OK && i <= last; i++) {
+00024         rc = sqlite3_bind_null(stmt, i);
+00025     }
+00026     return rc;
+00027 }
+00028 #endif /* SQLITE_VERSION_NUMBER < 3003007 */
+00029 
+00030 #if SQLITE_VERSION_NUMBER < 3003008
+00031 /* Until 3.3.8 it doesn't support CREATE TRIGGER IF NOT EXISTS, so
+00032  * just ignore errors :-(
+00033  */
+00034 int
+00035 lms_db_create_trigger_if_not_exists(sqlite3 *db, const char *sql)
+00036 {
+00037     char *errmsg, *query;
+00038     int r, sql_len, prefix_len;
+00039 
+00040     prefix_len = sizeof("CREATE TRIGGER ") - 1;
+00041     sql_len = strlen(sql);
+00042     query = malloc((prefix_len + sql_len + 1) * sizeof(char));
+00043     if (!query)
+00044         return -1;
+00045 
+00046     memcpy(query, "CREATE TRIGGER ", prefix_len);
+00047     memcpy(query + prefix_len, sql, sql_len + 1);
+00048     r = sqlite3_exec(db, query, NULL, NULL, &errmsg);
+00049     free(query);
+00050     if (r != SQLITE_OK)
+00051         sqlite3_free(errmsg);
+00052     return 0;
+00053 }
+00054 #else /* SQLITE_VERSION_NUMBER < 3003008 */
+00055 int
+00056 lms_db_create_trigger_if_not_exists(sqlite3 *db, const char *sql)
+00057 {
+00058     char *errmsg, *query;
+00059     int r, sql_len, prefix_len;
+00060 
+00061     prefix_len = sizeof("CREATE TRIGGER IF NOT EXISTS ") - 1;
+00062     sql_len = strlen(sql);
+00063     query = malloc((prefix_len + sql_len + 1) * sizeof(char));
+00064     if (!query)
+00065         return -1;
+00066 
+00067     memcpy(query, "CREATE TRIGGER IF NOT EXISTS ", prefix_len);
+00068     memcpy(query + prefix_len, sql, sql_len + 1);
+00069     r = sqlite3_exec(db, query, NULL, NULL, &errmsg);
+00070     free(query);
+00071     if (r != SQLITE_OK) {
+00072         fprintf(stderr, "ERROR: could not create trigger: %s\n", errmsg);
+00073         sqlite3_free(errmsg);
+00074         return -2;
+00075     }
+00076     return 0;
+00077 }
+00078 #endif /* SQLITE_VERSION_NUMBER < 3003008 */
+00079 
+00080 sqlite3_stmt *
+00081 lms_db_compile_stmt(sqlite3 *db, const char *sql)
+00082 {
+00083     sqlite3_stmt *stmt;
+00084 
+00085     if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) != SQLITE_OK)
+00086         fprintf(stderr, "ERROR: could not prepare \"%s\": %s\n", sql,
+00087                 sqlite3_errmsg(db));
+00088 
+00089     return stmt;
+00090 }
+00091 
+00092 int
+00093 lms_db_finalize_stmt(sqlite3_stmt *stmt, const char *name)
+00094 {
+00095     int r;
+00096 
+00097     r = sqlite3_finalize(stmt);
+00098     if (r != SQLITE_OK) {
+00099         fprintf(stderr, "ERROR: could not finalize %s statement: #%d\n",
+00100                 name, r);
+00101         return -1;
+00102     }
+00103 
+00104     return 0;
+00105 }
+00106 
+00107 int
+00108 lms_db_reset_stmt(sqlite3_stmt *stmt)
+00109 {
+00110     int r, ret;
+00111 
+00112     ret = r = sqlite3_reset(stmt);
+00113     if (r != SQLITE_OK)
+00114         fprintf(stderr, "ERROR: could not reset SQL statement: #%d\n", r);
+00115 
+00116     r = sqlite3_clear_bindings(stmt);
+00117     ret += r;
+00118     if (r != SQLITE_OK)
+00119         fprintf(stderr, "ERROR: could not clear SQL: #%d\n", r);
+00120 
+00121     return ret;
+00122 }
+00123 
+00124 int
+00125 lms_db_bind_text(sqlite3_stmt *stmt, int col, const char *text, int len)
+00126 {
+00127     int r;
+00128 
+00129     if (text)
+00130         r = sqlite3_bind_text(stmt, col, text, len, SQLITE_STATIC);
+00131     else
+00132         r = sqlite3_bind_null(stmt, col);
+00133 
+00134     if (r == SQLITE_OK)
+00135         return 0;
+00136     else {
+00137         sqlite3 *db;
+00138         const char *err;
+00139 
+00140         db = sqlite3_db_handle(stmt);
+00141         err = sqlite3_errmsg(db);
+00142         fprintf(stderr, "ERROR: could not bind SQL value %d: %s\n", col, err);
+00143         return -col;
+00144     }
+00145 }
+00146 
+00147 int
+00148 lms_db_bind_blob(sqlite3_stmt *stmt, int col, const void *blob, int len)
+00149 {
+00150     int r;
+00151 
+00152     if (blob)
+00153         r = sqlite3_bind_blob(stmt, col, blob, len, SQLITE_STATIC);
+00154     else
+00155         r = sqlite3_bind_null(stmt, col);
+00156 
+00157     if (r == SQLITE_OK)
+00158         return 0;
+00159     else {
+00160         sqlite3 *db;
+00161         const char *err;
+00162 
+00163         db = sqlite3_db_handle(stmt);
+00164         err = sqlite3_errmsg(db);
+00165         fprintf(stderr, "ERROR: could not bind SQL value %d: %s\n", col, err);
+00166         return -col;
+00167     }
+00168 }
+00169 
+00170 int
+00171 lms_db_bind_int64(sqlite3_stmt *stmt, int col, int64_t value)
+00172 {
+00173     int r;
+00174 
+00175     r = sqlite3_bind_int64(stmt, col, value);
+00176     if (r == SQLITE_OK)
+00177         return 0;
+00178     else {
+00179         sqlite3 *db;
+00180         const char *err;
+00181 
+00182         db = sqlite3_db_handle(stmt);
+00183         err = sqlite3_errmsg(db);
+00184         fprintf(stderr, "ERROR: could not bind SQL value %d: %s\n", col, err);
+00185         return -col;
+00186     }
+00187 }
+00188 
+00189 int
+00190 lms_db_bind_int64_or_null(sqlite3_stmt *stmt, int col, int64_t *p_value)
+00191 {
+00192     int r;
+00193 
+00194     if (p_value)
+00195         r = sqlite3_bind_int64(stmt, col, *p_value);
+00196     else
+00197         r = sqlite3_bind_null(stmt, col);
+00198     if (r == SQLITE_OK)
+00199         return 0;
+00200     else {
+00201         sqlite3 *db;
+00202         const char *err;
+00203 
+00204         db = sqlite3_db_handle(stmt);
+00205         err = sqlite3_errmsg(db);
+00206         fprintf(stderr, "ERROR: could not bind SQL value %d: %s\n", col, err);
+00207         return -col;
+00208     }
+00209 }
+00210 
+00211 int
+00212 lms_db_bind_int(sqlite3_stmt *stmt, int col, int value)
+00213 {
+00214     int r;
+00215 
+00216     r = sqlite3_bind_int(stmt, col, value);
+00217     if (r == SQLITE_OK)
+00218         return 0;
+00219     else {
+00220         sqlite3 *db;
+00221         const char *err;
+00222 
+00223         db = sqlite3_db_handle(stmt);
+00224         err = sqlite3_errmsg(db);
+00225         fprintf(stderr, "ERROR: could not bind SQL value %d: %s\n", col, err);
+00226         return -col;
+00227     }
+00228 }
+00229 
+00230 int
+00231 lms_db_bind_double(sqlite3_stmt *stmt, int col, double value)
+00232 {
+00233     int r;
+00234 
+00235     r = sqlite3_bind_double(stmt, col, value);
+00236     if (r == SQLITE_OK)
+00237         return 0;
+00238     else {
+00239         sqlite3 *db;
+00240         const char *err;
+00241 
+00242         db = sqlite3_db_handle(stmt);
+00243         err = sqlite3_errmsg(db);
+00244         fprintf(stderr, "ERROR: could not bind SQL value %d: %s\n", col, err);
+00245         return -col;
+00246     }
+00247 }
+00248 
+00249 int
+00250 lms_db_table_version_get(sqlite3 *db, const char *table)
+00251 {
+00252     int r, version;
+00253     sqlite3_stmt *stmt;
+00254 
+00255     stmt = lms_db_compile_stmt(db,
+00256          "SELECT version FROM lms_internal WHERE tab = ?");
+00257     if (!stmt)
+00258         return -1;
+00259 
+00260     if (lms_db_bind_text(stmt, 1, table, -1) != 0) {
+00261         version = -1;
+00262         goto done;
+00263     }
+00264 
+00265     r = sqlite3_step(stmt);
+00266     if (r == SQLITE_DONE)
+00267         version = 0;
+00268     else if (r == SQLITE_ROW)
+00269         version = sqlite3_column_int(stmt, 1);
+00270     else {
+00271         version = -1;
+00272         fprintf(stderr, "ERROR: could not get table '%s' version: %s\n",
+00273                 table, sqlite3_errmsg(db));
+00274     }
+00275 
+00276   done:
+00277     lms_db_reset_stmt(stmt);
+00278     lms_db_finalize_stmt(stmt, "table_version_get");
+00279 
+00280     return version;
+00281 }
+00282 
+00283 int
+00284 lms_db_table_version_set(sqlite3 *db, const char *table, unsigned int version)
+00285 {
+00286     int r, ret;
+00287     sqlite3_stmt *stmt;
+00288 
+00289     stmt = lms_db_compile_stmt(db,
+00290         "INSERT OR REPLACE INTO lms_internal (tab, version) VALUES (?, ?)");
+00291     if (!stmt)
+00292         return -1;
+00293 
+00294     ret = lms_db_bind_text(stmt, 1, table, -1);
+00295     if (ret != 0)
+00296         goto done;
+00297 
+00298     ret = lms_db_bind_int(stmt, 2, version);
+00299     if (ret != 0)
+00300         goto done;
+00301 
+00302     r = sqlite3_step(stmt);
+00303     if (r != SQLITE_DONE) {
+00304         ret = -1;
+00305         fprintf(stderr, "ERROR: could not set table '%s' version: %s\n",
+00306                 table, sqlite3_errmsg(db));
+00307     }
+00308 
+00309   done:
+00310     lms_db_reset_stmt(stmt);
+00311     lms_db_finalize_stmt(stmt, "table_version_set");
+00312 
+00313     return ret;
+00314 }
+00315 
+00316 int
+00317 lms_db_table_update(sqlite3 *db, const char *table, unsigned int current_version, unsigned int last_version, const lms_db_table_updater_t *updaters)
+00318 {
+00319     if (current_version == last_version)
+00320         return 0;
+00321     else if (current_version > last_version) {
+00322         fprintf(stderr,
+00323                 "WARNING: current version (%d) of table '%s' is greater than "
+00324                 "last known version (%d), no updates will be made.\n",
+00325                 current_version, table, last_version);
+00326         return 0;
+00327     }
+00328 
+00329     for (; current_version < last_version; current_version++) {
+00330         int r, is_last_run;
+00331 
+00332         is_last_run = current_version == (last_version - 1);
+00333         r = updaters[current_version](db, table, current_version, is_last_run);
+00334         if (r != 0) {
+00335             fprintf(stderr,
+00336                     "ERROR: could not update table '%s' from version %d->%d\n",
+00337                     table, current_version, current_version + 1);
+00338             return r;
+00339         }
+00340         lms_db_table_version_set(db, table, current_version + 1);
+00341     }
+00342 
+00343     return 0;
+00344 }
+00345 
+00346 int
+00347 lms_db_table_update_if_required(sqlite3 *db, const char *table, unsigned int last_version, lms_db_table_updater_t *updaters)
+00348 {
+00349     int current_version;
+00350 
+00351     current_version = lms_db_table_version_get(db, table);
+00352     if (current_version < 0)
+00353         return -1;
+00354     else
+00355         return lms_db_table_update(db, table, current_version, last_version,
+00356                                    updaters);
+00357 }
+00358 
+00359 static int
+00360 lms_db_cache_find_db(const struct lms_db_cache *cache, const sqlite3 *db)
+00361 {
+00362     int i;
+00363 
+00364     for (i = 0; i < cache->size; i++)
+00365         if (cache->entries[i].db == db)
+00366             return i;
+00367 
+00368     return -1;
+00369 }
+00370 
+00371 static int
+00372 lms_db_cache_resize(struct lms_db_cache *cache, int new_size)
+00373 {
+00374     cache->size = new_size;
+00375     cache->entries = realloc(cache->entries,
+00376                              cache->size * sizeof(*cache->entries));
+00377     if (cache->size && !cache->entries) {
+00378         perror("realloc");
+00379         cache->size = 0;
+00380         return -1;
+00381     }
+00382 
+00383     return 0;
+00384 }
+00385 
+00386 int
+00387 lms_db_cache_add(struct lms_db_cache *cache, const sqlite3 *db, void *data)
+00388 {
+00389     struct lms_db_cache_entry *e;
+00390     int idx;
+00391 
+00392     idx = lms_db_cache_find_db(cache, db);
+00393     if (idx >= 0) {
+00394         e = cache->entries + idx;
+00395         if (e->data == data)
+00396             return 0;
+00397         else {
+00398             fprintf(stderr,
+00399                     "ERROR: cache %p for db %p has another data registered"
+00400                     ": %p (current is %p)\n", cache, db, e->data, data);
+00401             return -1;
+00402         }
+00403     }
+00404 
+00405     idx = cache->size;
+00406     if (lms_db_cache_resize(cache, cache->size + 1) != 0) {
+00407         return -2;
+00408     }
+00409 
+00410     e = cache->entries + idx;
+00411     e->db = db;
+00412     e->data = data;
+00413     return 0;
+00414 }
+00415 
+00416 int
+00417 lms_db_cache_del(struct lms_db_cache *cache, const sqlite3 *db, void *data)
+00418 {
+00419     int idx;
+00420     struct lms_db_cache_entry *e;
+00421 
+00422     idx = lms_db_cache_find_db(cache, db);
+00423     if (idx < 0) {
+00424         fprintf(stderr, "ERROR: no db %p found in cache %p\n", db, cache);
+00425         return -1;
+00426     }
+00427 
+00428     e = cache->entries + idx;
+00429     if (e->data != data) {
+00430         fprintf(stderr, "ERROR: data mismatch in request to delete from cache: "
+00431                 "want %p, has %p, cache %p, db %p\n", data, e->data, cache, db);
+00432         return -2;
+00433     }
+00434 
+00435     for (; idx < cache->size - 1; idx++)
+00436         cache->entries[idx] = cache->entries[idx + 1];
+00437 
+00438     return lms_db_cache_resize(cache, cache->size - 1);
+00439 }
+00440 
+00441 int
+00442 lms_db_cache_get(struct lms_db_cache *cache, const sqlite3 *db, void **pdata)
+00443 {
+00444     int idx;
+00445 
+00446     idx = lms_db_cache_find_db(cache, db);
+00447     if (idx < 0)
+00448         return -1;
+00449 
+00450     *pdata = cache->entries[idx].data;
+00451     return 0;
+00452 }
+00453 
+00454 int
+00455 lms_db_create_core_tables_if_required(sqlite3 *db)
+00456 {
+00457     char *errmsg;
+00458     int r;
+00459 
+00460     errmsg = NULL;
+00461     r = sqlite3_exec(db,
+00462                      "CREATE TABLE IF NOT EXISTS lms_internal ("
+00463                      "tab TEXT NOT NULL UNIQUE, "
+00464                      "version INTEGER NOT NULL"
+00465                      ")",
+00466                      NULL, NULL, &errmsg);
+00467     if (r != SQLITE_OK) {
+00468         fprintf(stderr, "ERROR: could not create 'lms_internal' table: %s\n",
+00469                 errmsg);
+00470         sqlite3_free(errmsg);
+00471         return -1;
+00472     }
+00473 
+00474     r = sqlite3_exec(db,
+00475                      "CREATE TABLE IF NOT EXISTS files ("
+00476                      "id INTEGER PRIMARY KEY AUTOINCREMENT, "
+00477                      "path BLOB NOT NULL UNIQUE, "
+00478                      "mtime INTEGER NOT NULL, "
+00479                      "dtime INTEGER NOT NULL, "
+00480                      "size INTEGER NOT NULL"
+00481                      ")",
+00482                      NULL, NULL, &errmsg);
+00483     if (r != SQLITE_OK) {
+00484         fprintf(stderr, "ERROR: could not create 'files' table: %s\n", errmsg);
+00485         sqlite3_free(errmsg);
+00486         return -2;
+00487     }
+00488 
+00489     r = sqlite3_exec(db,
+00490                      "CREATE INDEX IF NOT EXISTS files_path_idx ON files ("
+00491                      "path"
+00492                      ")",
+00493                      NULL, NULL, &errmsg);
+00494     if (r != SQLITE_OK) {
+00495         fprintf(stderr, "ERROR: could not create 'files_path_idx' index: %s\n",
+00496                 errmsg);
+00497         sqlite3_free(errmsg);
+00498         return -3;
+00499     }
+00500 
+00501     return 0;
+00502 }
+00503 
+00504 
+00505 sqlite3_stmt *
+00506 lms_db_compile_stmt_begin_transaction(sqlite3 *db)
+00507 {
+00508     return lms_db_compile_stmt(db, "BEGIN TRANSACTION");
+00509 }
+00510 
+00511 int
+00512 lms_db_begin_transaction(sqlite3_stmt *stmt)
+00513 {
+00514     int r, ret;
+00515 
+00516     ret = 0;
+00517     r = sqlite3_step(stmt);
+00518     if (r != SQLITE_DONE) {
+00519         fprintf(stderr, "ERROR: could not begin transaction: %s\n",
+00520                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+00521         ret = -1;
+00522     }
+00523 
+00524     r = sqlite3_reset(stmt);
+00525     if (r != SQLITE_OK)
+00526         fprintf(stderr, "ERROR: could not reset SQL statement: %s\n",
+00527                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+00528 
+00529     return ret;
+00530 }
+00531 
+00532 sqlite3_stmt *
+00533 lms_db_compile_stmt_end_transaction(sqlite3 *db)
+00534 {
+00535     return lms_db_compile_stmt(db, "COMMIT");
+00536 }
+00537 
+00538 int
+00539 lms_db_end_transaction(sqlite3_stmt *stmt)
+00540 {
+00541     int r, ret;
+00542 
+00543     ret = 0;
+00544     r = sqlite3_step(stmt);
+00545     if (r != SQLITE_DONE) {
+00546         fprintf(stderr, "ERROR: could not end transaction: %s\n",
+00547                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+00548         ret = -1;
+00549     }
+00550 
+00551     r = sqlite3_reset(stmt);
+00552     if (r != SQLITE_OK)
+00553         fprintf(stderr, "ERROR: could not reset SQL statement: %s\n",
+00554                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+00555 
+00556     return ret;
+00557 }
+00558 
+00559 sqlite3_stmt *
+00560 lms_db_compile_stmt_get_file_info(sqlite3 *db)
+00561 {
+00562     return lms_db_compile_stmt(db,
+00563         "SELECT id, mtime, dtime, size FROM files WHERE path = ?");
+00564 }
+00565 
+00566 int
+00567 lms_db_get_file_info(sqlite3_stmt *stmt, struct lms_file_info *finfo)
+00568 {
+00569     int r, ret;
+00570 
+00571     ret = lms_db_bind_blob(stmt, 1, finfo->path, finfo->path_len);
+00572     if (ret != 0)
+00573         goto done;
+00574 
+00575     r = sqlite3_step(stmt);
+00576     if (r == SQLITE_DONE) {
+00577         ret = 1;
+00578         finfo->id = -1;
+00579         goto done;
+00580     }
+00581 
+00582     if (r != SQLITE_ROW) {
+00583         fprintf(stderr, "ERROR: could not get file info from table: %s\n",
+00584                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+00585         ret = -2;
+00586         goto done;
+00587     }
+00588 
+00589     finfo->id = sqlite3_column_int64(stmt, 0);
+00590     finfo->mtime = sqlite3_column_int(stmt, 1);
+00591     finfo->dtime = sqlite3_column_int(stmt, 2);
+00592     finfo->size = sqlite3_column_int(stmt, 3);
+00593     ret = 0;
+00594 
+00595   done:
+00596     lms_db_reset_stmt(stmt);
+00597 
+00598     return ret;
+00599 }
+00600 
+00601 sqlite3_stmt *
+00602 lms_db_compile_stmt_update_file_info(sqlite3 *db)
+00603 {
+00604     return lms_db_compile_stmt(db,
+00605         "UPDATE files SET mtime = ?, dtime = ?, size = ? WHERE id = ?");
+00606 }
+00607 
+00608 int
+00609 lms_db_update_file_info(sqlite3_stmt *stmt, const struct lms_file_info *finfo)
+00610 {
+00611     int r, ret;
+00612 
+00613     ret = lms_db_bind_int(stmt, 1, finfo->mtime);
+00614     if (ret != 0)
+00615         goto done;
+00616 
+00617     ret = lms_db_bind_int(stmt, 2, finfo->dtime);
+00618     if (ret != 0)
+00619         goto done;
+00620 
+00621     ret = lms_db_bind_int(stmt, 3, finfo->size);
+00622     if (ret != 0)
+00623         goto done;
+00624 
+00625     ret = lms_db_bind_int(stmt, 4, finfo->id);
+00626     if (ret != 0)
+00627         goto done;
+00628 
+00629     r = sqlite3_step(stmt);
+00630     if (r != SQLITE_DONE) {
+00631         fprintf(stderr, "ERROR: could not update file info: %s\n",
+00632                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+00633         ret = -5;
+00634         goto done;
+00635     }
+00636 
+00637     ret = 0;
+00638 
+00639   done:
+00640     lms_db_reset_stmt(stmt);
+00641 
+00642     return ret;
+00643 }
+00644 
+00645 sqlite3_stmt *
+00646 lms_db_compile_stmt_insert_file_info(sqlite3 *db)
+00647 {
+00648     return lms_db_compile_stmt(db,
+00649         "INSERT INTO files (path, mtime, dtime, size) VALUES(?, ?, ?, ?)");
+00650 }
+00651 
+00652 int
+00653 lms_db_insert_file_info(sqlite3_stmt *stmt, struct lms_file_info *finfo)
+00654 {
+00655     int r, ret;
+00656 
+00657     ret = lms_db_bind_blob(stmt, 1, finfo->path, finfo->path_len);
+00658     if (ret != 0)
+00659         goto done;
+00660 
+00661     ret = lms_db_bind_int(stmt, 2, finfo->mtime);
+00662     if (ret != 0)
+00663         goto done;
+00664 
+00665     ret = lms_db_bind_int(stmt, 3, finfo->dtime);
+00666     if (ret != 0)
+00667         goto done;
+00668 
+00669     ret = lms_db_bind_int(stmt, 4, finfo->size);
+00670     if (ret != 0)
+00671         goto done;
+00672 
+00673     r = sqlite3_step(stmt);
+00674     if (r != SQLITE_DONE) {
+00675         fprintf(stderr, "ERROR: could not insert file info: %s\n",
+00676                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+00677         ret = -5;
+00678         goto done;
+00679     }
+00680 
+00681     finfo->id = sqlite3_last_insert_rowid(sqlite3_db_handle(stmt));
+00682     ret = 0;
+00683 
+00684   done:
+00685     lms_db_reset_stmt(stmt);
+00686 
+00687     return ret;
+00688 }
+00689 
+00690 sqlite3_stmt *
+00691 lms_db_compile_stmt_delete_file_info(sqlite3 *db)
+00692 {
+00693     return lms_db_compile_stmt(db, "DELETE FROM files WHERE id = ?");
+00694 }
+00695 
+00696 int
+00697 lms_db_delete_file_info(sqlite3_stmt *stmt, const struct lms_file_info *finfo)
+00698 {
+00699     int r, ret;
+00700 
+00701     ret = lms_db_bind_int64(stmt, 1, finfo->id);
+00702     if (ret != 0)
+00703         goto done;
+00704 
+00705     r = sqlite3_step(stmt);
+00706     if (r != SQLITE_DONE) {
+00707         fprintf(stderr, "ERROR: could not delete file info: %s\n",
+00708                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+00709         ret = -2;
+00710         goto done;
+00711     }
+00712     ret = 0;
+00713 
+00714   done:
+00715     lms_db_reset_stmt(stmt);
+00716 
+00717     return ret;
+00718 }
+00719 
+00720 sqlite3_stmt *
+00721 lms_db_compile_stmt_set_file_dtime(sqlite3 *db)
+00722 {
+00723     return lms_db_compile_stmt(db, "UPDATE files SET dtime = ? WHERE id = ?");
+00724 }
+00725 
+00726 int
+00727 lms_db_set_file_dtime(sqlite3_stmt *stmt, const struct lms_file_info *finfo)
+00728 {
+00729     int r, ret;
+00730 
+00731     ret = lms_db_bind_int(stmt, 1, finfo->dtime);
+00732     if (ret != 0)
+00733         goto done;
+00734 
+00735     ret = lms_db_bind_int64(stmt, 1, finfo->id);
+00736     if (ret != 0)
+00737         goto done;
+00738 
+00739     r = sqlite3_step(stmt);
+00740     if (r != SQLITE_DONE) {
+00741         fprintf(stderr, "ERROR: could not set file dtime: %s\n",
+00742                 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+00743         ret = -3;
+00744         goto done;
+00745     }
+00746 
+00747     ret = 0;
+00748 
+00749   done:
+00750     lms_db_reset_stmt(stmt);
+00751 
+00752     return ret;
+00753 }
+00754 
+00755 sqlite3_stmt *
+00756 lms_db_compile_stmt_get_files(sqlite3 *db)
+00757 {
+00758     return lms_db_compile_stmt(db,
+00759         "SELECT id, path, mtime, dtime, size FROM files WHERE path LIKE ?");
+00760 }
+00761 
+00762 int
+00763 lms_db_get_files(sqlite3_stmt *stmt, const char *path, int len)
+00764 {
+00765     int ret;
+00766 
+00767     ret = lms_db_bind_blob(stmt, 1, path, len);
+00768     return ret;
+00769 }
+

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__db__common_8c.html b/www/api/lightmediascanner__db__common_8c.html new file mode 100644 index 0000000..772e05a --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c.html @@ -0,0 +1,1415 @@ + + +Light Media Scanner: src/lib/lightmediascanner_db_common.c File Reference + + + + + +
+ +
+

src/lib/lightmediascanner_db_common.c File Reference

#include "lightmediascanner_db_private.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+ +

+Include dependency graph for lightmediascanner_db_common.c:

+ + + +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

int sqlite3_prepare_v2 (sqlite3 *db, const char *sql, int len, sqlite3_stmt **stmt, const char **tail)
int sqlite3_clear_bindings (sqlite3_stmt *stmt)
int lms_db_create_trigger_if_not_exists (sqlite3 *db, const char *sql)
sqlite3_stmt * lms_db_compile_stmt (sqlite3 *db, const char *sql)
int lms_db_finalize_stmt (sqlite3_stmt *stmt, const char *name)
int lms_db_reset_stmt (sqlite3_stmt *stmt)
int lms_db_bind_text (sqlite3_stmt *stmt, int col, const char *text, int len)
int lms_db_bind_blob (sqlite3_stmt *stmt, int col, const void *blob, int len)
int lms_db_bind_int64 (sqlite3_stmt *stmt, int col, int64_t value)
int lms_db_bind_int64_or_null (sqlite3_stmt *stmt, int col, int64_t *p_value)
int lms_db_bind_int (sqlite3_stmt *stmt, int col, int value)
int lms_db_bind_double (sqlite3_stmt *stmt, int col, double value)
int lms_db_table_version_get (sqlite3 *db, const char *table)
int lms_db_table_version_set (sqlite3 *db, const char *table, unsigned int version)
int lms_db_table_update (sqlite3 *db, const char *table, unsigned int current_version, unsigned int last_version, const lms_db_table_updater_t *updaters)
int lms_db_table_update_if_required (sqlite3 *db, const char *table, unsigned int last_version, lms_db_table_updater_t *updaters)
int lms_db_cache_add (struct lms_db_cache *cache, const sqlite3 *db, void *data)
int lms_db_cache_del (struct lms_db_cache *cache, const sqlite3 *db, void *data)
int lms_db_cache_get (struct lms_db_cache *cache, const sqlite3 *db, void **pdata)
int lms_db_create_core_tables_if_required (sqlite3 *db)
sqlite3_stmt * lms_db_compile_stmt_begin_transaction (sqlite3 *db)
int lms_db_begin_transaction (sqlite3_stmt *stmt)
sqlite3_stmt * lms_db_compile_stmt_end_transaction (sqlite3 *db)
int lms_db_end_transaction (sqlite3_stmt *stmt)
sqlite3_stmt * lms_db_compile_stmt_get_file_info (sqlite3 *db)
int lms_db_get_file_info (sqlite3_stmt *stmt, struct lms_file_info *finfo)
sqlite3_stmt * lms_db_compile_stmt_update_file_info (sqlite3 *db)
int lms_db_update_file_info (sqlite3_stmt *stmt, const struct lms_file_info *finfo)
sqlite3_stmt * lms_db_compile_stmt_insert_file_info (sqlite3 *db)
int lms_db_insert_file_info (sqlite3_stmt *stmt, struct lms_file_info *finfo)
sqlite3_stmt * lms_db_compile_stmt_delete_file_info (sqlite3 *db)
int lms_db_delete_file_info (sqlite3_stmt *stmt, const struct lms_file_info *finfo)
sqlite3_stmt * lms_db_compile_stmt_set_file_dtime (sqlite3 *db)
int lms_db_set_file_dtime (sqlite3_stmt *stmt, const struct lms_file_info *finfo)
sqlite3_stmt * lms_db_compile_stmt_get_files (sqlite3 *db)
int lms_db_get_files (sqlite3_stmt *stmt, const char *path, int len)
+


Function Documentation

+ +
+
+ + + + + + + + + +
int lms_db_begin_transaction (sqlite3_stmt *  stmt  ) 
+
+
+ +

+ +

+Definition at line 512 of file lightmediascanner_db_common.c. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_bind_blob (sqlite3_stmt *  stmt,
int  col,
const void *  blob,
int  len 
)
+
+
+ +

+ +

+Definition at line 148 of file lightmediascanner_db_common.c. +

+Referenced by lms_db_get_file_info(), lms_db_get_files(), and lms_db_insert_file_info(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_bind_double (sqlite3_stmt *  stmt,
int  col,
double  value 
)
+
+
+ +

+ +

+Definition at line 231 of file lightmediascanner_db_common.c. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_bind_int (sqlite3_stmt *  stmt,
int  col,
int  value 
)
+
+ +

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_bind_int64 (sqlite3_stmt *  stmt,
int  col,
int64_t  value 
)
+
+
+ +

+ +

+Definition at line 171 of file lightmediascanner_db_common.c. +

+Referenced by lms_db_delete_file_info(), and lms_db_set_file_dtime(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_bind_int64_or_null (sqlite3_stmt *  stmt,
int  col,
int64_t *  p_value 
)
+
+
+ +

+ +

+Definition at line 190 of file lightmediascanner_db_common.c. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_bind_text (sqlite3_stmt *  stmt,
int  col,
const char *  text,
int  len 
)
+
+
+ +

+ +

+Definition at line 125 of file lightmediascanner_db_common.c. +

+Referenced by lms_db_table_version_get(), and lms_db_table_version_set(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_cache_add (struct lms_db_cache cache,
const sqlite3 *  db,
void *  data 
)
+
+ +

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_cache_del (struct lms_db_cache cache,
const sqlite3 *  db,
void *  data 
)
+
+ +

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_cache_get (struct lms_db_cache cache,
const sqlite3 *  db,
void **  pdata 
)
+
+ +

+ +

+ +

+
+ + + + + + + + + +
sqlite3_stmt* lms_db_compile_stmt_begin_transaction (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 506 of file lightmediascanner_db_common.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
sqlite3_stmt* lms_db_compile_stmt_delete_file_info (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 691 of file lightmediascanner_db_common.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
sqlite3_stmt* lms_db_compile_stmt_end_transaction (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 533 of file lightmediascanner_db_common.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
sqlite3_stmt* lms_db_compile_stmt_get_file_info (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 560 of file lightmediascanner_db_common.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
sqlite3_stmt* lms_db_compile_stmt_get_files (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 756 of file lightmediascanner_db_common.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
sqlite3_stmt* lms_db_compile_stmt_insert_file_info (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 646 of file lightmediascanner_db_common.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
sqlite3_stmt* lms_db_compile_stmt_set_file_dtime (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 721 of file lightmediascanner_db_common.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
sqlite3_stmt* lms_db_compile_stmt_update_file_info (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 602 of file lightmediascanner_db_common.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
int lms_db_create_core_tables_if_required (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 455 of file lightmediascanner_db_common.c. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_db_create_trigger_if_not_exists (sqlite3 *  db,
const char *  sql 
)
+
+
+ +

+ +

+Definition at line 35 of file lightmediascanner_db_common.c. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_db_delete_file_info (sqlite3_stmt *  stmt,
const struct lms_file_info finfo 
)
+
+
+ +

+ +

+Definition at line 697 of file lightmediascanner_db_common.c. +

+References lms_file_info::id, lms_db_bind_int64(), and lms_db_reset_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
int lms_db_end_transaction (sqlite3_stmt *  stmt  ) 
+
+
+ +

+ +

+Definition at line 539 of file lightmediascanner_db_common.c. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_db_finalize_stmt (sqlite3_stmt *  stmt,
const char *  name 
)
+
+ +

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_db_get_file_info (sqlite3_stmt *  stmt,
struct lms_file_info finfo 
)
+
+
+ +

+ +

+Definition at line 567 of file lightmediascanner_db_common.c. +

+References lms_file_info::dtime, lms_file_info::id, lms_db_bind_blob(), lms_db_reset_stmt(), lms_file_info::mtime, lms_file_info::path, lms_file_info::path_len, and lms_file_info::size. +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_get_files (sqlite3_stmt *  stmt,
const char *  path,
int  len 
)
+
+
+ +

+ +

+Definition at line 763 of file lightmediascanner_db_common.c. +

+References lms_db_bind_blob(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_db_insert_file_info (sqlite3_stmt *  stmt,
struct lms_file_info finfo 
)
+
+ +

+ +

+
+ + + + + + + + + +
int lms_db_reset_stmt (sqlite3_stmt *  stmt  ) 
+
+ +

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_db_set_file_dtime (sqlite3_stmt *  stmt,
const struct lms_file_info finfo 
)
+
+
+ +

+ +

+Definition at line 727 of file lightmediascanner_db_common.c. +

+References lms_file_info::dtime, lms_file_info::id, lms_db_bind_int(), lms_db_bind_int64(), and lms_db_reset_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_table_update (sqlite3 *  db,
const char *  table,
unsigned int  current_version,
unsigned int  last_version,
const lms_db_table_updater_t updaters 
)
+
+
+ +

+ +

+Definition at line 317 of file lightmediascanner_db_common.c. +

+References lms_db_table_version_set(). +

+Referenced by lms_db_table_update_if_required(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_table_update_if_required (sqlite3 *  db,
const char *  table,
unsigned int  last_version,
lms_db_table_updater_t updaters 
)
+
+
+ +

+ +

+Definition at line 347 of file lightmediascanner_db_common.c. +

+References lms_db_table_update(), and lms_db_table_version_get(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_db_table_version_get (sqlite3 *  db,
const char *  table 
)
+
+
+ +

+ +

+Definition at line 250 of file lightmediascanner_db_common.c. +

+References lms_db_bind_text(), lms_db_compile_stmt(), lms_db_finalize_stmt(), and lms_db_reset_stmt(). +

+Referenced by lms_db_table_update_if_required(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_table_version_set (sqlite3 *  db,
const char *  table,
unsigned int  version 
)
+
+
+ +

+ +

+Definition at line 284 of file lightmediascanner_db_common.c. +

+References lms_db_bind_int(), lms_db_bind_text(), lms_db_compile_stmt(), lms_db_finalize_stmt(), and lms_db_reset_stmt(). +

+Referenced by lms_db_table_update(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_db_update_file_info (sqlite3_stmt *  stmt,
const struct lms_file_info finfo 
)
+
+
+ +

+ +

+Definition at line 609 of file lightmediascanner_db_common.c. +

+References lms_file_info::dtime, lms_file_info::id, lms_db_bind_int(), lms_db_reset_stmt(), lms_file_info::mtime, and lms_file_info::size. +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
int sqlite3_clear_bindings (sqlite3_stmt *  stmt  ) 
+
+
+ +

+ +

+Definition at line 16 of file lightmediascanner_db_common.c. +

+Referenced by lms_db_reset_stmt(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int sqlite3_prepare_v2 (sqlite3 *  db,
const char *  sql,
int  len,
sqlite3_stmt **  stmt,
const char **  tail 
)
+
+
+ +

+ +

+Definition at line 8 of file lightmediascanner_db_common.c. +

+Referenced by lms_db_compile_stmt(). +

+

+


Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.map b/www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.map new file mode 100644 index 0000000..90f6a23 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.map @@ -0,0 +1,4 @@ + + + + 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 index 0000000..5e579df --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.md5 @@ -0,0 +1 @@ +48d33c778b3fddfffba6e852e034f89e \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.png b/www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..27715dcc84cc3019c8e0f37bb3c1617ac1c277ee GIT binary patch literal 1462 zcmV;n1xfmeP)v0{{R3%s%ud0000LP)t-s{{R2~ z|Na>naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00mA-L_t(|ob8hGXNts|LO}l;jGjLp@h2p|@jv_vz$u4VEUmKiA>fRGuD0J` za00*a`ylS))Z2OjvfFRC-^ZS`Ab9=y){o&X0fItJ zuSpStLPal155lXxf`T+4^zH}>5H7P1^v$3>1ZoCdH-_dA*aI$IJ3?Cs$@WXbN-C%! zgiGITK&TmnaS$|vFcN}R5Qaj~2twcYf~{IW7>z*#2z?I@i>eJ_Km@fRbUrfNQ%wkC z-4})GK^PW6JqQCMs0E?(kIJ8^0))$ucLb@^5Qc6CEDyoG8k;lgpM03GQ^%R|9~4^| z!k;?2?Lj#A7EhjjKn4K}0?8nNK_D3fFbE`r0IeZhYgnNP;f70-@OCd+Iv?hL#7^YD z1qd{z4pyvZ=psjV&?fFf@i$7<6Fz}}IeUI7cOva8L+}`!G%)E?2!4kjGq<1L{5%A9 zhz*2db08gnkTS*Vc?ZpTSB7xA&%eRZZ;10x$fwMd3N2!Wusm|k{C(X~G|*4&cVRA; zqnYgd%G((>oI|ht)OUYu`%h3y2#9yStmr*~F1O!czS`dM03jb4n*-0!&suqc%LgpO z9tcp1e&7^2K_a6Hf&Dx~pl%RRHV1})B?!2I01F5)*6$bupQ+v)yqDis5R#E=2)RdK z2vdsj%Md<5KnR9C2|?Qv*z?QHA^An2IZ*N@?1&Kj-vxwcnggnLj5Bd>Z|DQ>+}%+- z2)*SEW2->gCywNO9)erUL6w6g46%SNMEY>Yh2vFfMoDAyOv*JYg4~ne| z;he^QC|zfM!sr+(%~Tot`Mgcn0h_o*vMGFElQ~H?tru*9H>t@~|Isj5qNl5Scatd6+`_} z(EP?Ng_>Sd?_WFi=&{4e#~HZ-6$q!EA?=?$ohepUU=R#KsK6i?giwJ&FbJW7AtCU; zC#EyS$_f-A?1jD@I(Z@f|D`B>pn4W2(3J00dHkuA%i#rcATON* zaV-%f-{8WFi|kO8&0k#zd!a9!!gLLD=*z#oprX(*#Bx$|aCxqMUO)t3Z&eYWQ1*m! z=nKTw{Ot6ALSDfvIwAKzzso<}MP!4^8e2rvuV6blw!be(1X6*?8 zD+tlsAlCBb5DLv9r7*lmreT1v{+EKhJH+L2A_QF4A?)n}0`7&rOdvW&f5#90>w7wX z`1V#W#|hN@U0f^&WCxq8nz%W*;vze$o{-ZILSHtSM@Ec=n{DByvX?pLu$eXGW2W7M zj#Tg-5KhS;fI;9241z%j6&M6H22(y0v2l!M77spq- QJpcdz07*qoM6N<$f + + 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 index 0000000..76125c3 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.md5 @@ -0,0 +1 @@ +7412d602f0beb325ae8c656a13097e94 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.png b/www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..52482cd09e6e61f5a545c164ac72bd6ef38cdd07 GIT binary patch literal 1152 zcmV-`1b_R9P)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00bCGL_t(|ob8+qlCm%i zhW83(rU#HCd=3X;oZSB^A5HT14|G?=BA9npv89dlAq_~|{c$GI&)x^{F)|X6k${W@ z)RY9R)Y#(SnvxhB*LzAv0x}Yik${W@WF#OX0T~I%NI*M~sBRhkNb-R=flQaB$_j7N z4kXY%)$b%ud$;|FM9Rz(XC^`6B`u$RU+GV*unB+qa!ym8Xwlln+KB{BEcm>K4T(F1 zP1xtKPgCdi3DVXZiO_bE#MhH}rgty;kL`=VSY-(9zxXa^0C!g20Xl=cx#3Zg;YN#j#sdKDldr%Vp7OoN9 z+N(xGy~QUEDI)|E-ls41Xe#m7?i0 zl{s7@4qzNhuaH2&%2le7oujBA!Dm?-NOU9ddz!MR%<$sBR75(+RA-Qq1D9eFZ3b&L zRY_uM$BoZ%*pQs{KmsY=iz1=St^?W3jdk6c9l0cDy#F=~|_`LK0=_DL62YH2-4+xjHSmerq zg^O@W2{Ux~h?!k33GS{Tp}tV&Maq)bGu&f7(454h!h1JqrR;YHWF#OX0T~JCEzh?5 zzW9!Q`Kv!nZ}N#^z(c_JwWA%Zd&mEp)!hEu#=tP{=55O{*E5gl zZ;$yFNGy0-7<^m08=Xye<}XDiKZy zVFAhXz6S|itiXwCod=eCq|?f+qq*zkK7m@Pcj&SS-RCeWmw%gPO1%loP9&lqr(<(i z6Gd@pRMJ)cY91>);6k_3+mRDh;y@RqZ^?C@jgHNP%nuVMmbY&_s|8lqen~g`Adt5~~ zuKbw9GxkqJ;zj#L0%nW^%oqunF%mFiBw(f?i7f`!Hny7ExBrg`841WpK>q=lie*D2 S{t~zV0000 + 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 index 0000000..a35505b --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.md5 @@ -0,0 +1 @@ +597cf289a37dec2c079a7e40c848ec2c \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.png b/www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..de691e27b47eb74ff13d37d7e72e1964616615d8 GIT binary patch literal 907 zcmV;619bd}P)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00SdQL_t(&f$f@$ZR0Qu zhC4zXKm*h(7~bOqS`+6`8NfBEJF6`Sgs|HD*;jFgV}7 z#YYus*_C!n<#o9yiSJtmEzS2DS{{jXXhZAa3nyGcTfa1`+;asjkCZSpp{+{+Ev!Xc zbf4b{v?{U-t%a|KmfITaF=$ofHMH|fsi4^+=Zk~34pu-zcyWfn0dB(`GJ@q+ z#P+m!MpdN&N#hupr2$RTT?|^MJ+0ChQvwaTJ@Uaq!FeXBpPJA#y%w}Bue2>L(t@*f z8#Q?e%{0N)+k^HM_cYiZ-GH{_mA1r1Tr?eMb|F9sO{p6+AImy!oWN%Zt>2#K0L?yY zPmV;oj@~EGh-89Z2agI`xRpww_1p6tfW@H2_T)&^d-^Sr4-&Gc5wW}l5$o9-G!{&u z?bUAycz^1PN@@%#CA9-|s}F#@d_K+qn0jB4M6HSL1b0JLuQJ%MYL zYiPM{9q{{}J@2IZko`9g?61h`uF8aVmEDiXPiRB36WW06gf<{M|1DuacK!p*fK6xv hHlYpJgf?KGe*q2F&xQm9CR_jj002ovPDHLkV1jeSqon`< literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.map b/www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.map new file mode 100644 index 0000000..d94cf4b --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.map @@ -0,0 +1,2 @@ + + 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 index 0000000..7804ae4 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.md5 @@ -0,0 +1 @@ +4140a991699f501c103f1dd52e357650 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.png b/www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..4149e9462aad65bd696e4eb6f9968261d02057f9 GIT binary patch literal 886 zcmV-+1Bv{JP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00Rz5L_t(&f$f@$ZQL*n zhBHEJKm(jtFf@pJ`1fC>5=n`A`s8zyriF+ct}-7oKa+%<=3|*MD4!pH`wspcnXJZT zvKp7kYFvnw!S_n=|mt-IwJu zu~BDL$A00WuqqwketZjf2H|;9GTRne!GHMn-AgOj${V|jPG>j*6-Lw<)iqgdk0i<= zEeyy;ki9r`@kP1=1uOWhpS19G1t|ntiH=iO9nB-iI{L}V1F9T;Z9R#s;Ilqx;h91n zKCMK@tW-zYdtPfV`Xh;=J?K|~hwLCGan)m0op!CHUH(TZ z(uZd|=MNgrPpdl1Rb_+U9xfuxvdqEjwahuM^ejrfNeOXF(QG&L;n}W@!WV8LPjwqiX1}>BaNN?>|MG2K6rlMevg%x9xL(w8SjIyvb-e!`MdM0EHBAqH7=9Y zxJ*{#GFgqw7qfc%Kd#@CZkAsg{$A8${_V#FnXJZTvKp7kYFs{l1B42b=8|gdA^-pY M07*qoM6N<$g5g50jQ{`u literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.map b/www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.map new file mode 100644 index 0000000..44c61e3 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.map @@ -0,0 +1,2 @@ + + 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 index 0000000..e293c4e --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.md5 @@ -0,0 +1 @@ +42099300ab356ee9f37a5189393d9a29 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.png b/www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..53a30cf24b2b1a347dd65cf338e546fcaad6bbae GIT binary patch literal 927 zcmV;Q17Q4#P)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00TEkL_t(&f$f?NZsQ;j zg?ofJ5(lWSVEG=4tatybEX)rB7?RLfN>|IMksHtO@O+*jIPKRmZNzS0pT2^B%qFlw zo4^Kb0vogl%;6K}J6Ckk)$|g6Q=WlspRg{lH%s7&%6sx|0vnZ`zy@U}utC`gY*2Or z8^xXR#e!_z{*GotD{k!jB?1&2!ag7x~|`vkt;Dg09Hoo zU1$PZYhaFn>7eKAegNzg`6{rj3iEc&1}x+>1nd;~7+AO=Ctzui^VOuS$x2}R5nkLh zI}m>OJe`a_1YdN6PKpoaBM}<6lY<99f$flv=19Z`VZO;QU~2+~_+n3ZRF|i92Ra#i zG?**QC7&~26PU`|_DElFdM`O=)}T?bg1_@;|i z4J;MZ)&<5Vvq%NTHRnOs7H_ijLS11%)+`Ci(g3EZE(uttB~yhlq6`>xIpoP=p?RjL z?^?jPB-+3PgI3sPgS5~}U|M~LtzlYWTOZiBtzk&(aRb;=R@h>LxL7*C(xQ(Vm=aIG zyp^*pl)$Y9)@{jnz|m?+VUxxITLPvk1+Z>~#jR2ftlyI104xcZwIoO4ynf#^d72mo ztZX}29s2}~1#@7bC@II#NT3%l+(?T)A)(IH6`c+n`!*YQY_jOnM}$W53>0#RiU3QC zKBHQeydk*5Xwi4{;&qsjL=8TvJ}0HqSoHIaE6qq_!Ji$f3kbwT76fidy%6VHJAGYt zm}2HAHy)+W#+|n#&B#*;XkS(D?dxV&e6L;BkgLA)e&x}qu~QLX%>V*6_Gt9V4!;Gg zX+?goq*}-I1RkqA23G2x1Af=D 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 index 0000000..c6f38a0 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.md5 @@ -0,0 +1 @@ +0559150039d6a3e46b15f46277f3053f \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.png b/www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..d7b9e7911232363a192f5dcabeb91ceef04658d9 GIT binary patch literal 543 zcmV+)0^t3LP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00Fm2L_t(oh3%MOl7k=& zg?j}3!2#q79q+M@^X`9@B`*O{aN1pMx9yT?2MGvYUkF$){mWZ-`D=pP))>#RcVTom zV$;sZ$41S^C*$>q?J}OEVqRU>V<6SK}AH2 z^$kX9GglbRm90mRQN*n>4sktFx0Q}*)kQ|_^aI99tWynokz%dR2?gWO$Gny)Z9NhY zic<;eJ&Zwe&dj`+EobPwW;r9j0%`?M$iD4vO%1V2@wm6wbY zubnf(7$b_!j#N5}P@83YPi6OZwLckE=abIs>IrkN{oiMb#@HA?p7G$jjvdBBqvqqk h%R8x8x5jvmb>HYl5j|Uwk9+_C002ovPDHLkV1nBy`Ue02 literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.map b/www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.map new file mode 100644 index 0000000..96b428f --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + 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 index 0000000..1781a1d --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.md5 @@ -0,0 +1 @@ +d683eb6d3d57ba2eb96d3762485f9724 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.png b/www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..68d16c3ff264af37dfa36517de626ffd3491d7f1 GIT binary patch literal 2648 zcmZ9Oc|6p67stm~X9mNVQI@XkKe7xm5?N-5k>!`&pseB6;7Ua*X6z!2sm4A-_DEyP ze!11nmYN7D-O8FQca-(Yqn_9E$8*1bocHG}uXE1p``1YY?X5)M(r^d_B0{vbaD+gh zs{49{k9Xfrl0tsj2L`ltw*0=g|GrB}g?D#%zk2m*KfLebx4ZrK6*SV(-U$M^oHKL` z0)ed(EzF&x3YH2*Xr&rrNgF~nF2DFVek=4jzx?+@r|Ww)7vcoWWt7Azw|19pb-y3} z;9-V-|MdZ}adhQur)f_d3P|9C%Tw@`g6Jrx>QTWjJeKvwC+3^+?4Fl5*4|i6bLd`>`=?OFiv)RA z>dou||4Mx_BCspaOq)08Bu7k!FW~g~#S+Y5%wS=k1AJ+&&Z`Q*P-SF1d%kWIJ=(1B z>ZMlCWWtdiO-+OOU^j~C1C91KkRHRJ{AJw?$js+R?Nk5W@2Xw?_v^;L?DaK_a|=8^?O7c<6!cdbhqwP9#?v}ri8a`EE8Y8a9wE2;^_cJIK{$tz ze{P%o1~1h<8l|788@VD~sZ8&Y8LCbK1y;Oyo8o(uiAF#=<7j+uD)9(#pV3I|O(QA- zUIIX+3dqn2fhNl2NP^?S0iAWpy^D|iBMs??a%Q|+WRJ!ebAJVPuChB~>m`V1IZwcp z=8G|ab8N&FAV4nWBJeeOZVE)reT*Rx(;Y%Zl=UBV>(QtAhcj6Bw4vm_=3zSTcHvgO-DFy;&|?~g0DJ4(k-XJ<^LHq4W9FR5d0+zJkF?D9klcxU@7E!{c{h}_K1A|P z_k8Z|P4X5$167V`@JXcJ!8C|T#|mRt_M)}gm7nV?$5v=kKfY}e1k(kre@lu8-_Qv* zDMyVb#^>qUb+BaLWoIza`f{s7L7xJ$`HvPt^>zZZ+rn z*5T-%jM$Un?mpR*@50}X&oM-&;LDEh!x(47=e}PCZOS{B1d{9U^Sdx5+QwRe7*=!=$jiS-}6FfdA zv?go_9%qVTx7t0$hoaVD#URs>bi1@H{b2GaZ3vZpiT(1LX(-ikz2yELZP6L;6SdnSy zf$N7qZIY-r(buX62=a=Rn)9|;SAMr|otFmhKPHC&T8IOwWRgGI@Z`Z9@%L#Ox zs$@NaiC8|L=1nzyC460a2q#aAK(vA-uZVw=p$F9BBz=5`8 zuL%cM?8)doq3s~t(42?5l|lm4+^(n4E~A&!K;e>4!#dWukeZptgnr- zXrHq5R6w|U9r#F|Q6!a|l&1&a6wmHVTd~Tk4)cC@zYhyg}Tdu-*?yg$GbpBo6lw}1}0c&|wDCPVg?H;%t z5^wtMtly}$^~~KVJFt%S=Hy+cS^fQ9 z>k7esYeTAB_L5zYTP0Z*|FimqeUb_e$qx*?#mHTCnM}Fe-=X4H$q)L}s`W^z)em}e zS)Fg5;#_9+#R(Y+sHh3J#>LwsICvdLJ1d2iL{>~;2|OUps#lRa0x;TIxd(skJK-TZ z)sgbt)#aE*81Pul`X~7?E*~lfSzjCmt9#8`2@{u^t9x}O2osK{F`|8P{Yh!n;g6AV zsA9(O;2m}W&aN_i_B!A#ny7etk%hg-fxu1GHJSCL96q>#I+=+r0uOXESnlej`EXBy&W+aS@B#cq z;Ej#}a(Qb3^5jPG@-yc)bE#IIZ}Ga}E(<(?Q8DgTz$e$+v!J9=bZON{(OQ*m4d21b zB~|uzt1}WcddZ@C;(&z;H1U}QQ!G~qtsp_c2Pl9kwtVpHJ}a}Ho#@YltUqjzn-fX1 zHmH>ZgW6t#67RrLNtMTra5?8r$_@Q8;eH(B8GZ#fxi}D5eT5u&eIP9C2!{{yOFg4)6(TWTV@-j3fuSPO z&3T1b$he+)2|iJO=5T!hvK7<1N=@;OdpVP*PGvU?wpxch)D%T9lDUa>LAMba23zBo zO_WC5L13W3K=DtW&yayUif-#IoQ(VP=;aG81zz?9bNRf?vn29w%?uwFxRDzkVfW!7 zhcZ*bMGEqx?ii+j#ntkBzTiF9Sw2-Lnl2+c6+xMSzCV*+r!Z@VVdmKl7PcfhNW z9myyb(r|mk)l1p}nwBeQMz;gFxu89fnf0&#BR&XubtUNN#p9Qzu{m0qe(72i{QeEL by^EZWm1uI=cviK42||dL_7-(`AL@Sq?ftvv literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.map b/www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.map new file mode 100644 index 0000000..49aeb2f --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.map @@ -0,0 +1,2 @@ + + 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 index 0000000..25e6015 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.md5 @@ -0,0 +1 @@ +11ab49ab26e02addb26e1495f2117883 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.png b/www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..21442155ba7000d6253e5e2845870199255df4cb GIT binary patch literal 904 zcmeAS@N?(olHy`uVBq!ia0y~yV2TB@RauyUWS5iUTp%SH;1lBd?>`XylawsjzkmPb z%a?(|K)%zj{mDQUQ%R6tFatx`p1ajkAiQ{gkPbW-LM za{d1=JaR*CBZKkdWpB&2)~xL6=s?u|K}IInSRJG&de7B{Z)(G{`;|yZ`NXuAAf^xbcy#_EoQ#! zbFpHchs@lB8ub}AQ>H&oFE0|?zc%}vNNHT&d-)p|E0%GdoqN0Lc@MYx3+Fv6x~A99 z41e4CO3AJ8q+-&Jip>vMce2H;POI{I%((tm@SO{fT_2vmm$+-+_PsN|i0+X(A6^-n zw^LrYb4I`lM&b3xJ{ztV*!Otuz1v1H&ZW;0e(yZTdCsrvo12YLT|llAQ~6W6;G;Fqg+d)J<8)q<(h z%h*yBPejT5Dp9=MC#-+u48PQoUrgaFcYVyBP0jUjIA-M^vti}(FNP;le@D0n#dXYl zZ_@FVRg+1ov$rx;TCn3x-r^VEmAu{^xA5{wVJ*CPvE#btdtb9PZQ|1>`-=vjW$sF7 zUH+k~^tEZQhqlRA){Mg#3jetKj`*cvW0jt0M5{GxJSLwm+TVRvQ;1P#YH= z8y`JyikIi}mEK(8AFa0K9$9_k{n1O$w_f?W^@*oU@d53(-&+=~TAyn9QA_MnuHlq~ z!`XNGA2Q{f(*CYoy=d0-UxACK?D?}`U()6&dyf5;&^xebPm%qm^j~wMKX*-!wVhZQ zYRjJI9OqcM@S*7KmLQgLp|{`Tw&iO~yfLlD_@+(x^y`&db$j{Z7&BXMFdypv{`=9M zRb~a%7wg`?X#f8EjtNkajJr?zu1VpAaZA7MSj{PYbc#liOJR@iufQC|qVF~O(R~hQ zzP~PZ$zA>Y>Z>X 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 index 0000000..c8e59a5 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.md5 @@ -0,0 +1 @@ +c88b612b05b498869d844a38382eee06 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.png b/www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..b8b3104893d4ac4d58ad275131bb9bc4533eafd8 GIT binary patch literal 538 zcmV+#0_FXQP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00FW|L_t(oh3%LNZi6rk zhI@o|QVsw|7|KB+^xyv~i(k-$czuAhwu>c1jSc?lM}jzAUS7_pzb3dXo$(lX8^(Y` z#EY@-sYw~9BP4o^X;&6IV`uD)o$&)1zlNh3F_$4{G*Phe^clyYW(;{Z3J*aSjPY*9 z(o@~gVjRbc@gj_h8E_l-8ODw0?~FN>HREMTB`)qJ?=pf8i3!Y*nnv)&Y>W96C695j z#l_ZU9EW5nqZfqiWxrs^SqoVU^@(i>6(cCx%nIcZk|(}sHep=hBS1?WuMoBmQA7gZCZFv-`D@Mwtau5~2!wI-)ZAK30FivG2r}ZXD zr^9G7!{LiOF70WI;!jFF~< zVnIsBGZXocnc<1zmX(WUi_(;_F*8?dIJaJ=0=URBGcq1Y*UTWOT5Gjs(&j#+&8Fbq znp4{D+6x=2w=y;znDN2Auv$TD>r;#*9;4p<@82mpV`uzW#(iHqOuQ)jo|@k0o79U- cXFNvEKh{$xJpX4xF8}}l07*qoM6N<$g2XQEbpQYW literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.map b/www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.map new file mode 100644 index 0000000..8045b86 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.map @@ -0,0 +1,2 @@ + + 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 index 0000000..74dd657 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.md5 @@ -0,0 +1 @@ +3cc06df5622a01305fd152e7404ce386 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.png b/www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..68595e646ca24dc144fb5ccb1337596535ffeaae GIT binary patch literal 857 zcmV-f1E&0mP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00QwzL_t(&f$f@YZsZ^g zhI@oE5(k(ZVMjR#ir)KQrC=Ka0jD!NTXlcfY8wTA5I@)qY5Nge4Eg-{?I-wu#o5^6 zY;18hwiGrIKP=Yd|7c<>{CiOovw8fi>?WIcSN1wedMm86vBlZg;%sbjHnun$Tbzw8 z&c>GCVspD+XZ4cIQ6zkND{RkZ$CwfJW0~kNSzZXT^|8nE(e<`%Eh~&U#I!!>VzR6b z)5vYRb9S8(O62c}G#TpVX*Q#!n2pvth{7f;*le2B>5(tkjFw`C6&nhFw$APnA+9OE z%Vx5?WySqHA0rbE+_-!6k% zWL!7-m9VWAJ^Z#Q8RK}__{Vl(Dg*M4Fng#p=|2fub#F1+8wvPN3uQ{4bs^c|b9V8dlX znFt%Br)u3WjgAeKWuqVJ%0$$=B^xS&W6g%kN9*R%oE}}J?963mlR~#&+_-2O8%oq* z6UMp;&56s$U{m*EN_(iA5Ke5miF6ywr8TiJd#YS;ta?hi2wF&b*R#=_`Qb~!_iXH* z$`>Fgo7PioiTR^hjtEID(bx=q!?i3kC>u;{axGC-dEr6dJMF2^y_oW)*5X0AJXrUr zen%bT*4pKFbK_pzo&8FUa{}BVv=>tg%3j5 j#M#*5Y;18hwtRj89&jnbG!up%00000NkvXXu0mjf?k%De literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.map b/www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.map new file mode 100644 index 0000000..c7a0d16 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + 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 index 0000000..245609e --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.md5 @@ -0,0 +1 @@ +9db3c86e6669be30b89f5dce87d82668 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.png b/www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..8891e0ccfc30ef65031c677bbbe905a70905462c GIT binary patch literal 4097 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 literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.map b/www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.map new file mode 100644 index 0000000..ad44bfe --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.map @@ -0,0 +1,2 @@ + + 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 index 0000000..41fed04 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.md5 @@ -0,0 +1 @@ +70af470fb9b373dbdde441f9c228fdac \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.png b/www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..434c52be4b428ef6bc76cd5a064110413baaada8 GIT binary patch literal 925 zcmV;O17iG%P)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00T8iL_t(&f$f?Lj^iK< zhUW@Y;sD7JHp)Sw$oId>f*%0`ZtG1oJG;V~D%03F_{(ofI`b8#y>DNCdjkKIOXjWJ z{m^+lnSGFa*$sG-eNcQjE)T^l?2|}pMr`CW(@Kqy9&$+_z_ivyrk*9ow>w2eehddZ znSJ@mIlF;IlMjk-NNXipIWLaKWdMHzftOS8Rn&ojDq5*JAQeE?77Ae}7~-Q&tbABM zoTU?G03BFVJ5$DfgzeXA*dnyjwE1>J))p!t5)AQCCssaO$TBf2`x@$mS101wi-=qW z^U6De7FS)XFSNy%EVO`S z$``{gjtHT=8_~il&oM2QifC&qgM^RHA|D4mt!=Ytl~tY{V_JN>MOzF6E}0m#7FoCW zx|Oy__yt32|Elq3{i02a+aTci%r2<}`k??Ed)FX#vF!6HH9PP`^E z+RMwLLg#E(9%#P0Hj>vnh{2|WX$=FAmhZ{u*&g0! zx1STAZ;q@i&uQtreZUWTPJB_P&#Wx}%~SP@I(=qknY27vCM{2vNz0RE((+{a2(24` z?EX`;X7ritCarsE=YNg(Y|`@Bq~) + + + + + + + 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 index 0000000..9a000f1 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.md5 @@ -0,0 +1 @@ +28f5727047bcdc514f6c42a943efead4 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.png b/www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..840fd70331ed32b6680d772b54a9eed221e4f951 GIT binary patch literal 3087 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 Ohd4R9I@H>oyZ&#`aokA& literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__common_8c__incl.map b/www/api/lightmediascanner__db__common_8c__incl.map new file mode 100644 index 0000000..08b8776 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/www/api/lightmediascanner__db__common_8c__incl.md5 b/www/api/lightmediascanner__db__common_8c__incl.md5 new file mode 100644 index 0000000..e8ff10c --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c__incl.md5 @@ -0,0 +1 @@ +264a73e0300f7fc21733a46a317433fb \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c__incl.png b/www/api/lightmediascanner__db__common_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..eb21bf9ef85d4393958d3a01ccb8c735fcbe2c25 GIT binary patch literal 3853 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 literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.map b/www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.map new file mode 100644 index 0000000..a62f463 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.map @@ -0,0 +1,2 @@ + + 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 index 0000000..69eaa35 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.md5 @@ -0,0 +1 @@ +48dd492320b5d2c740f331d4213ef1e6 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.png b/www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..f22b93d0f97aa5426819fc073e63f931c1cb29be GIT binary patch literal 888 zcmV-;1Bd*HP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00R(7L_t(&f$f?LZsZ^g zhI@o&Bn~h+!bThfjsE*zWx+OYNS$We?yj&pih>`+A2vhUzHLhs^8WVIPw;QZ;-r(s zNhgbwP68)`Z11)z$=|@~@jTD)lJrp|yt@^)xv4PPL_&)z)bcje~GPeooJ6PZ>6kf5NG@6f=xCQTW!{ zyGsN!CVrPwXL-)4b+A=lF%iG!mpFBn=bU`_fwe@yHl1U}iIyLfn+5z2kJDh#!Rx@~ zk#)#A^0P7+IW-P$3$K;P>qv?0d*T#IP2Oj{CD_W4U(gwUk;XAeXR>a{X@3?`oU|<< z6G7(U(9MN(4mBsA9(eH)>WRw1GKQ$*HY#+q|KKI1BYyD?N9}O@+GmnDA!O|6Ce#yT z(dkZf%qiwDkP{WhYs`tuDwW5PosOb{EHmmk ziNl0bv5$*#%xSCZY0FL=cETy{6Zd*95ewK*#z2*EM{W(rSW}L+P=il!>%J7o>$M3-(Wq3&z zC!H)#I$4}_vN-AFYdPKfqw+PGX85(???rX%|1gxYIO$|@(#hhallR}ef_=0JLTpd~ O0000 + + 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 index 0000000..c25b812 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.md5 @@ -0,0 +1 @@ +f15d940169e90cc24dc1006e856a6422 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.png b/www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..c777388e2776e148a01693eb761c6c8947e653f3 GIT binary patch literal 1155 zcmV-}1bq96P)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00bLJL_t(|ob8+oa-<*- zhI52ql?ND(kks5`DXZ^)m9-zdL?>oZ9NGRW85MaN=<$%j#)K0mJh25%w-AyN<` z1tDq$VuU)K{so(XxU~2VDF~5*5Ge?ef)FVPk%AB@2$6yiwFNOQMu;#vPRETu2gzq% z{7g0Wh~I+16F9zJ5U$ z4fv`9dIZ@?8=wt@u7OA741vy>x&(yugq!5IuTCG0Woao98ehHBQuB9UT&Y(K1?|xLStpO@cZOkNIK)2WoiKeQRonxKv=6F z1ca@tqyrFEJ;Im)Jz*e!_^(0G?Sg6C14QjC)Y_EP5W>PhJNE$beVm?HspYW)Yak%C zux|(AtGGi9r`vFdPVtC4NOQ14IcE$!y620^?h9QkJ=65R1FHMFAr8 zfD8mM2w)KG0C-kF03;xg!QDZi>2i-)cm!L?5dmV1@E#FT`T_A{*9cis5NX%AJBZog z(I5_plLSlZ3=k7(*x-*Q4l0y|isKP8xOK3Mw?GJkCkY3Ik}P@74n~&8NI@tF1)(4m z#14Jg>{&jla@wnA^N4nq2ft)C9RJqXkhFGzF&VmRQHnVvwXM+_P)S;P8^mcLRTARf|Gg;oknwXUYx zw1H;-E#UQ9rd@?I@f%4Q2&{ayzT$BiehZ(I-vVz9VrvP{LNOPgAIoeKda`toB|ls; znqQRe4upMV>5vpjpC7M+$WC4X;>B7fdJ~^t-RI1*mI?e=q|}2;V@aA~^LyaU#dEaI z!AW&ov5Pq!Et~q&9>msKCOLv|E#q3I6~{?E!q*eJhOC8Kn>h@yJA{hg0mS-RCKIn!x&)MM+yG&GuoT}(Ji?d- z2=8^qxAGPsR=P$w0^SMc0fSgRn~}fqoz&xF1W|yzjl|}+0RdZUnVd<2C5{N#mofTb z_HrnY4yY&`&=R;Ygh3P9@EhqG6r(s%08;y{Jt7{zSj$u-?ipgQ+=!DleoAb9`#id^ zi+S8;racYx1ENX_A~c{NqyYsX4JZg{KtV_Y?LZtde^#if*0cfrf0iNzAyN>c&%cqV VT=1TqG&ukO002ovPDHLkV1hDy`=I~; literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.map b/www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.map new file mode 100644 index 0000000..49aeb2f --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.map @@ -0,0 +1,2 @@ + + 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 index 0000000..eda4808 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.md5 @@ -0,0 +1 @@ +5a19337cd92bc81a6609fb3efc0944b8 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.png b/www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..c91b45cd649346870f0bbe2282a657d1c9667ec2 GIT binary patch literal 893 zcmV-@1A_dCP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00R|CL_t(&f$f@$ZR0Qu zhC4zXKm)`p1RBI={QIwR;zKV>a?1GHYf=4ZU|6JR^E0W)ZQqtDgWli%_Z|E!O7d;ZU&Y?s1LUN%i$HcehOOj&7!CJo`Y-eF866-}`M{bEc?mZtHK@(RjuQ z&B$%NOU8v0nwxl{iq|2-6JE6^szc4IA0k-WTMfL{l; z3t9wxrZ(Y~ZA^fe-A2*xMU>o+bQYQD71Sl2jd<00Yt9{BQcet@;zf0N;3dVX;3!I3 zztUax>I+B>Q}9|kyri5sJLNU#$5>xNsNluro1e%MpO!;B>+^~U_IN$&`g-I^vCI;{ z1FsYeVjJ@+)_Wpi2W>T6jJyow8@Wigas!)x4+;eeQb)sNzd za$e%a-x|fB9y~1y4KHezlGnH&!vR%&XY1l1-A5_Tu$kCoDx8 zK#Za`CySWttoOx!m6s~%YW?C#OZ%o<6erlUAJrBjclY + + 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 index 0000000..b330f4a --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.md5 @@ -0,0 +1 @@ +1fc1d627110c5472cfa8eca613ac8338 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.png b/www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..ad349679c752b2229c03fad186eef7a55e2791e3 GIT binary patch literal 1123 zcmV-p1f2VcP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00a9;L_t(|ob8+oZsQ;j zhI@p?5(h}6y}(Ak$D(NNf0Z&19>%b31=x$tucVGK9`nIK9Pso*-CDms&Mv{Zn*3*% z;9O1q&KJ;7A=9~VNATC2Y#J4!tjXW`0+YW&rcoivn*5zFF!?KF8Wp0f$=~?`lOL7b z$!P=p0cgi1${!8x*!HX*I*8vfy2O9-t9$W>M0I6;z_*Zrk>57B!I!-0=Ms_IjZH9} z3wJ0#*cy;F#`dSGzzrT#@i9uHET(he4(1ofzA3)~>DjmCzpejk9PyA6xEs*;r=yLM zM9@CVrN+M?0Qa4zck^4}m?$~kLH+ob=L0vlz5iXFsJrvq8mN$IRF<+j_J79zU1P#D zDoR=X_!<9kOaDjTrwVwC(EqEJXq>#og|HPlz+;HYH(8~*ie-|X2dfPHcL`)w2b9(MuD?{iXS zz4mV z=dWG<9-F`Z@vouzS(Cp;W|#78U^TXX48Kk$hTxkMW&2!wbG6||<5_#V+s7o@1deO} z@9~FRa(sUSoO`H>`Q;QH&e>h$BK+xHm5VBn9d9Mezd3jyKdui-+h~5wn?F$^Z?q4O z!Dqkmgl9=?+eOZ(5JTfA@fbP89N5gurnz;KO4aPnkaiRV4h>&Vm|(ZXiUPoyc$e z7?tq5l7;>W4lT 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 index 0000000..c30a280 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.md5 @@ -0,0 +1 @@ +cc1edbcc8e3d21faf0252ae0d894ea4d \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.png b/www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..e3b7acb6bcb188eb7ae1ef8ebc6442a85fccecaf GIT binary patch literal 495 zcmVnaKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00DweS@BObb{6R>Z&}L-QB8^u`3C4w|wgqh;?tXec{+i%G1L~~q3+2(N zxiM?^ge--cI@N@_5+^^P2GoEWP`?Qkei#aAvtUd(1j%kOUuZyu3S~BYKSLhConq7% zk21D_itnLxn9TIpgbJ?$<+sD{q1-hn4OkN@2kSFbHGYHw-NFJSNJ1kb8A~roqCqaR zw`Vd#g#`+9>vEX&1gC~Bz4`oRoZQfy777`QV?hlh9GKXsAtGi;Up9r77ARyajRr*u z5)JT}TaU4gT@IiG#6smTttDZKR+eSD-j61}X~B9xCOUvQ&X9y+S!?wOoQa zO5Y^ugN2G^nKjhQxee5%^ihfkgKHXE=$to5^=mJQC%YUJy5Kk|U&i3_g%-MBHBOE2 zi_5OitAMf_6w=z;INFLTvO79Z0_u0)q3hW4<`c(EG$b8R-_k!hkO$O&x-nGm59}sX l?}V%y|G{xL4XCqvegVe=#L0l;T*?3d002ovPDHLkV1hV2)kXjS literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.map b/www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.map new file mode 100644 index 0000000..722d046 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.map @@ -0,0 +1,4 @@ + + + + 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 index 0000000..44f8d00 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.md5 @@ -0,0 +1 @@ +588cb80a9f2488c89433dd877e1f5200 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.png b/www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..1fcc9cc57e4b3f36d9c9383f9afbc9957162d374 GIT binary patch literal 1440 zcmV;R1z-A!P)v0{{R3IlzCH0000LP)t-s{{R2~ z|Na>naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00lTnL_t(|ob8qUZ!b*2j`K^(I+1l(N?2Hug`+S>f&DZhR{6uLO<}f={P~{C z0-tbR5HDhw;cbZWYS)yGg7qu!O92Ku3~x^1&1(b^+wI!CQCdfe3l1Z0I((E@Y#oDO zqI}GLQA@&PL!o0zq&;XzDL_gAQVNh#fRqAMhr;LQ=lyWvSE2y@dG9-PH%Fn$zK*CS zg(|x`q>2=dw+zKqg+l8^p$3K9TngHTP=Ny1gr@65c?wbnZcP`3!W4q>x1zf_t&$XO zZC8Ut6@yX~+Wtn!RfIxs5K2&JyPLSF%PDlo;BpF$_YwDWDTThi z9ur+ip<4zQQs|h$WfU5}a{ftIP`GvZy^!iWg|4fD=z|9goY23;O@{p)9nF8NMd9l* z4f{JfYR%DfPf002N&!*|kWzq@0;Cimr2v(uaJ!$f=4iU76etX|G>C>tESq*rrU_w5 zx?y4ptAWdMmEo*e4{IGIZgdMt+(S%ES6HzuJWN403={Fki~=ouU)*hbZ_P630SdKy z(0ddz1qyk(!CREb4PLm9iG@K63UOnyQlA2!U1H+~qWRw!eBu|vu#qIn#9^QiV*dTy z)!kc&q9T`FZuGl+g25y&XTBR5U!B5iAGvc&C<}wPR@P)8g#f0z8WCd-@Ms`*YzTW; zmj$BKFJj9fV)QZbH~t0%Z{nJQJLOzWk{TftLg^UD0mvxaW4nOsZ<3WJDZp-LV@|=n zZBv+hgRw`!B(0-FXqv*0HNt&4tSF>4BB#JjLQ3J88c_v9puoi)c1&C`Ta9{sP`0#mJ5SEkp$AG(?B(!RMakps?YAKvaciR z`3YwB=sk`s|2h;-J&PzpX9rJxjiHeFJXUn}~gus6HTLy1$# zh>1l2hI?%Fud>0jt66O9Si3AdMj^(M5z$#R8DPGkfJhV)Cmqh0rZ8WdWfVeUKcswP zr}#5n+wO z;kp_@j>3j>qR&-kqX`s3<;o0hgaYl&t}~jXbwty}6$3VL^vro`(O=*uK<4C;c5jT% zIDR2Df;Q&zp~__;u75MTPPXxpzT;1Me7CXJ9&{dX#=GiuD4fh+DJTV>jZ#nwJ{zS_ uk;2J)M + + + + + 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 index 0000000..e8512d6 --- /dev/null +++ b/www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.md5 @@ -0,0 +1 @@ +b1f660c2d4925e78ca3ebe1d9828a8cd \ No newline at end of file diff --git a/www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.png b/www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..788c25aec8207c04b9cbaf7a51c6f283907b0ec6 GIT binary patch literal 2316 zcmZWrXH=7k5{(*ypddy+*MNcrL_!IIgd#);p@p&ud>|cVDN2b5qJ{t>8WluQLg+$5 z2?^4xp=_3>5@|{^6r~8Lbcu){xSY4|o%hap^JDIvd;iRjnK=_furZSmmllUWAQBel zI9mv0J93LRKzD5A%j1??0t6sffhL>3wqg^32;%X0Jv}{J@>Y#qV>ke#^}I3w^z#@thhgl9-8>cW9izQ{1x0Oa}{9p=3M<>1apKO6W22aSpFVQClz ze%p0q@1CE;?5a&6Cdv}e4uT^y?uh40f}jWBe0SZYs=U8-#S%XODXO`u0>ZQ)jeY@g#k?2jSeg}N`_teWze!o0VaKCFMiO%4+D zh-9{Maux=(QcEq~ohJ&o1haM}XUT$6FMGpz3v4aA|McGcYOvTX9jcY5@vt#hm41Oy znX4h0co&3mYzxzfi1ERR-uwK6zj>9M08P0^C{+v%Y1#o0rmXLfZ-@94cIYaazJ!l| z(+0v+3{3NF5oP!?JsQ6NpSmYy22Y_rqV^yBh(peVRoi^Y9+|gP7|1lBivunZC((g!>G&08jm)m38q!h6 zqEwvI0zxkMzIN)ETRu?anu_22m-!%o*@w`r5TJo(Z*H41jH+~H+r=4Gj+OWH(5MUO z;GaYw|MW&P)jQ)7Y1J#V0`MB|7zJ5aL#k%!&5(`q?`>pklnYctewY5bCWF0%q<-qR zgNj)zsCnKfdwsf>Rep0ol^|H`XL6;Ije;D;rf2oNMaZq(2jOC|;ipO3ol(%GqZfy> zW$Dp%q*FkrOa4Kmp^v6LZW6_fXUjv8=(Dg@euTQ_^Xu1AUsyRm#J5SX45{DyIjhE3 z$tKi?>aV@n>`~BV3K%qIz~?#!oHUba{lM7y+E%dIvU^6vkc?zP$I?o#6y@0{&Yinw zsGy_}B_eu#f-~xS=d~YEsSePc$keV6Ev}Z(J+yD69HE>{p1{Lv#sh$8>YMc(j%Qw4 z^EL(?_d4JP8!Vaqkktw#k>$|!p_fSJ$@H4lRDBb$`ns`_7JGkh#f?^#z@_P-98vZ` zZ_$H{L~#(0-{USfzdTo3czuV9V-3^xowm6|*X=XLZkc!|(^Oag@Z5Tho5T6S1zvy$ z4T#igL{%CS$^8djWM*S;OLPs{Io;4(OzNKIY7kfIA5k$hey#iALb=Tr`2LwepSyHv zBEsr_CO(tDC)XEtmbc`xOyc6p7te6?YuJW5OEv7%GQFcvduDke`U#K9?^>AIqY@_< zHGtaih0mQ?eh|Yek+V82Qy)2kJkgCB37m@{WhpbaFOF|tg|(-y*GDgmTEt9I9k!)Q z2QG%aA@oL&-BdXQt_3G0!x)6<1Etis%>&@*19nPJ@JUak)Fj|6m{Q7qY)gI{A-tU3 zlz7C$5i5p8qD#~jKBdleNE>B}pI2&hUQYINDee2L88!_si`2?{8MtWK`URm^brJZIJ z+`U3=e;MYVfJv|5golT_G@I8>JbE$O@~hyg?3WQO$r;B5iV>IL-e=aJX76^~++8%Q z_aucdvBYSEUdHBCKC7I{k*+m;T>t3oww3jaf2lx zikr8F;&c6>ZO=L@1bMd$XH(h?&AR>~NjE;P$F@I6aEkW1Wo*U$_$A7Gi+9bw(%z64u(+=V3TrfgVw8$4w7g1CFb9g^;OXQ2f*>&92N1OETZ6jWDtgOJ{5jONi+8 zN3gqg9lp2K`9WqA_5UEHgn_Loy_;WtNXWT*Q6*9}jjhTYpWfv>e>3$yNv4K=WtZ@^ zvNz}u61->~*|}|I>O!{R(YHlxmHfR|WV+L(vhv`lS$u04s?Awc=SjjwSI6Lihu&P@ zqV(}4*evUl{C2r6YqZIW1|7X(EQ%2jW`^_%BVGvBS~w8QVlG z4dNOv{#*d7dfoXcyQ1INV`xxp5bl3C%PGO(P-nC*P51IjmA1S?10q{@Y`ksHT*veI zz#&~%hbS40u66GW@UFY=mPX8nx8ol7FrF7S+>vJTAi8NMpcY3M`ws{|6E_^!>bs3b jGA*7zza#$7wyw!hkAYurHgZv0-wVXT#0FQ4Js + +Light Media Scanner: src/lib/lightmediascanner_db_image.c Source File + + + + + +
+ +
+

src/lib/lightmediascanner_db_image.c

Go to the documentation of this file.
00001 #include <lightmediascanner_db.h>
+00002 #include "lightmediascanner_db_private.h"
+00003 #include <stdlib.h>
+00004 #include <stdio.h>
+00005 
+00006 struct lms_db_image {
+00007     sqlite3 *db;
+00008     sqlite3_stmt *insert;
+00009     unsigned int _references;
+00010     unsigned int _is_started:1;
+00011 };
+00012 
+00013 static struct lms_db_cache _cache = {0, NULL};
+00014 
+00015 static int
+00016 _db_table_updater_images_0(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run) {
+00017     char *errmsg;
+00018     int r, ret;
+00019 
+00020     errmsg = NULL;
+00021     r = sqlite3_exec(db,
+00022                      "CREATE TABLE IF NOT EXISTS images ("
+00023                      "id INTEGER PRIMARY KEY, "
+00024                      "title TEXT, "
+00025                      "artist TEXT, "
+00026                      "date INTEGER NOT NULL, "
+00027                      "width INTEGER NOT NULL, "
+00028                      "height INTEGER NOT NULL, "
+00029                      "orientation INTEGER NOT NULL, "
+00030                      "gps_lat REAL DEFAULT 0.0, "
+00031                      "gps_long REAL DEFAULT 0.0, "
+00032                      "gps_alt REAL DEFAULT 0.0"
+00033                      ")",
+00034                      NULL, NULL, &errmsg);
+00035     if (r != SQLITE_OK) {
+00036         fprintf(stderr, "ERROR: could not create 'images' table: %s\n", errmsg);
+00037         sqlite3_free(errmsg);
+00038         return -1;
+00039     }
+00040 
+00041     r = sqlite3_exec(db,
+00042                      "CREATE INDEX IF NOT EXISTS images_date_idx ON images ("
+00043                      "date"
+00044                      ")",
+00045                      NULL, NULL, &errmsg);
+00046     if (r != SQLITE_OK) {
+00047         fprintf(stderr, "ERROR: could not create 'images_date_idx' index: %s\n",
+00048                 errmsg);
+00049         sqlite3_free(errmsg);
+00050         return -2;
+00051     }
+00052 
+00053     ret = lms_db_create_trigger_if_not_exists(db,
+00054         "delete_images_on_files_deleted "
+00055         "DELETE ON files FOR EACH ROW BEGIN "
+00056         " DELETE FROM images WHERE id = OLD.id; END;");
+00057     if (ret != 0)
+00058         goto done;
+00059 
+00060     ret = lms_db_create_trigger_if_not_exists(db,
+00061         "delete_files_on_images_deleted "
+00062         "DELETE ON images FOR EACH ROW BEGIN "
+00063         " DELETE FROM files WHERE id = OLD.id; END;");
+00064 
+00065   done:
+00066     return ret;
+00067 }
+00068 
+00069 static lms_db_table_updater_t _db_table_updater_images[] = {
+00070     _db_table_updater_images_0
+00071 };
+00072 
+00073 
+00074 static int
+00075 _db_create_table_if_required(sqlite3 *db)
+00076 {
+00077     return lms_db_table_update_if_required(db, "images",
+00078          LMS_ARRAY_SIZE(_db_table_updater_images),
+00079          _db_table_updater_images);
+00080 }
+00081 
+00096 lms_db_image_t *
+00097 lms_db_image_new(sqlite3 *db)
+00098 {
+00099     lms_db_image_t *ldi;
+00100     void *p;
+00101 
+00102     if (lms_db_cache_get(&_cache, db, &p) == 0) {
+00103         ldi = p;
+00104         ldi->_references++;
+00105         return ldi;
+00106     }
+00107 
+00108     if (!db)
+00109         return NULL;
+00110 
+00111     if (_db_create_table_if_required(db) != 0) {
+00112         fprintf(stderr, "ERROR: could not create table.\n");
+00113         return NULL;
+00114     }
+00115 
+00116     ldi = calloc(1, sizeof(lms_db_image_t));
+00117     ldi->_references = 1;
+00118     ldi->db = db;
+00119 
+00120     if (lms_db_cache_add(&_cache, db, ldi) != 0) {
+00121         lms_db_image_free(ldi);
+00122         return NULL;
+00123     }
+00124 
+00125     return ldi;
+00126 }
+00127 
+00140 int
+00141 lms_db_image_start(lms_db_image_t *ldi)
+00142 {
+00143     if (!ldi)
+00144         return -1;
+00145     if (ldi->_is_started)
+00146         return 0;
+00147 
+00148     ldi->insert = lms_db_compile_stmt(ldi->db,
+00149         "INSERT OR REPLACE INTO images ("
+00150         "id, title, artist, date, width, height, orientation, "
+00151         "gps_lat, gps_long, gps_alt) VALUES ("
+00152         "?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
+00153     if (!ldi->insert)
+00154         return -2;
+00155 
+00156     ldi->_is_started = 1;
+00157     return 0;
+00158 }
+00159 
+00172 int
+00173 lms_db_image_free(lms_db_image_t *ldi)
+00174 {
+00175     int r;
+00176 
+00177     if (!ldi)
+00178         return -1;
+00179     if (ldi->_references == 0) {
+00180         fprintf(stderr, "ERROR: over-called lms_db_image_free(%p)\n", ldi);
+00181         return -1;
+00182     }
+00183 
+00184     ldi->_references--;
+00185     if (ldi->_references > 0)
+00186         return 0;
+00187 
+00188     if (ldi->insert)
+00189         lms_db_finalize_stmt(ldi->insert, "insert");
+00190 
+00191     r = lms_db_cache_del(&_cache, ldi->db, ldi);
+00192     free(ldi);
+00193 
+00194     return r;
+00195 }
+00196 
+00197 static int
+00198 _db_insert(lms_db_image_t *ldi, const struct lms_image_info *info)
+00199 {
+00200     sqlite3_stmt *stmt;
+00201     int r, ret;
+00202 
+00203     stmt = ldi->insert;
+00204 
+00205     ret = lms_db_bind_int64(stmt, 1, info->id);
+00206     if (ret != 0)
+00207         goto done;
+00208 
+00209     ret = lms_db_bind_text(stmt, 2, info->title.str, info->title.len);
+00210     if (ret != 0)
+00211         goto done;
+00212 
+00213     ret = lms_db_bind_text(stmt, 3, info->artist.str, info->artist.len);
+00214     if (ret != 0)
+00215         goto done;
+00216 
+00217     ret = lms_db_bind_int(stmt, 4, info->date);
+00218     if (ret != 0)
+00219         goto done;
+00220 
+00221     ret = lms_db_bind_int(stmt, 5, info->width);
+00222     if (ret != 0)
+00223         goto done;
+00224 
+00225     ret = lms_db_bind_int(stmt, 6, info->height);
+00226     if (ret != 0)
+00227         goto done;
+00228 
+00229     ret = lms_db_bind_int(stmt, 7, info->orientation);
+00230     if (ret != 0)
+00231         goto done;
+00232 
+00233     ret = lms_db_bind_double(stmt, 8, info->gps.latitude);
+00234     if (ret != 0)
+00235         goto done;
+00236 
+00237     ret = lms_db_bind_double(stmt, 9, info->gps.longitude);
+00238     if (ret != 0)
+00239         goto done;
+00240 
+00241     ret = lms_db_bind_double(stmt, 10, info->gps.altitude);
+00242     if (ret != 0)
+00243         goto done;
+00244 
+00245     r = sqlite3_step(stmt);
+00246     if (r != SQLITE_DONE) {
+00247         fprintf(stderr, "ERROR: could not insert image info: %s\n",
+00248                 sqlite3_errmsg(ldi->db));
+00249         ret = -11;
+00250         goto done;
+00251     }
+00252 
+00253     ret = 0;
+00254 
+00255   done:
+00256     lms_db_reset_stmt(stmt);
+00257 
+00258     return ret;
+00259 }
+00260 
+00272 int
+00273 lms_db_image_add(lms_db_image_t *ldi, struct lms_image_info *info)
+00274 {
+00275     if (!ldi)
+00276         return -1;
+00277     if (!info)
+00278         return -2;
+00279     if (info->id < 1)
+00280         return -3;
+00281 
+00282     return _db_insert(ldi, info);
+00283 }
+

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__db__image_8c.html b/www/api/lightmediascanner__db__image_8c.html new file mode 100644 index 0000000..8ef9ede --- /dev/null +++ b/www/api/lightmediascanner__db__image_8c.html @@ -0,0 +1,92 @@ + + +Light Media Scanner: src/lib/lightmediascanner_db_image.c File Reference + + + + + +
+ +
+

src/lib/lightmediascanner_db_image.c File Reference

#include <lightmediascanner_db.h>
+#include "lightmediascanner_db_private.h"
+#include <stdlib.h>
+#include <stdio.h>
+ +

+Include dependency graph for lightmediascanner_db_image.c:

+ + + +

+Go to the source code of this file. + + + + + + + + + + +

Functions

lms_db_image_tlms_db_image_new (sqlite3 *db)
int lms_db_image_start (lms_db_image_t *ldi)
int lms_db_image_free (lms_db_image_t *ldi)
int lms_db_image_add (lms_db_image_t *ldi, struct lms_image_info *info)
+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int lms_db_image_add (lms_db_image_t ldi,
struct lms_image_info info 
)
+
+
+ +

+Add image file to DB.

+This is usually called from plugin's parse() callback.

+

Parameters:
+ + + +
ldi handle returned by lms_db_image_new().
info image information to store.
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 273 of file lightmediascanner_db_image.c. +

+References lms_image_info::id. +

+

+


Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__db__image_8c__incl.map b/www/api/lightmediascanner__db__image_8c__incl.map new file mode 100644 index 0000000..8df1391 --- /dev/null +++ b/www/api/lightmediascanner__db__image_8c__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/www/api/lightmediascanner__db__image_8c__incl.md5 b/www/api/lightmediascanner__db__image_8c__incl.md5 new file mode 100644 index 0000000..7511090 --- /dev/null +++ b/www/api/lightmediascanner__db__image_8c__incl.md5 @@ -0,0 +1 @@ +e083e2e3773d3d81a27a5260aa936185 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__image_8c__incl.png b/www/api/lightmediascanner__db__image_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..79a426af31434e67c412eb92fa97a3769c48999e GIT binary patch literal 4068 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 literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__playlist_8c-source.html b/www/api/lightmediascanner__db__playlist_8c-source.html new file mode 100644 index 0000000..d36b5f0 --- /dev/null +++ b/www/api/lightmediascanner__db__playlist_8c-source.html @@ -0,0 +1,224 @@ + + +Light Media Scanner: src/lib/lightmediascanner_db_playlist.c Source File + + + + + +
+ +
+

src/lib/lightmediascanner_db_playlist.c

Go to the documentation of this file.
00001 #include <lightmediascanner_db.h>
+00002 #include "lightmediascanner_db_private.h"
+00003 #include <stdlib.h>
+00004 #include <stdio.h>
+00005 
+00006 struct lms_db_playlist {
+00007     sqlite3 *db;
+00008     sqlite3_stmt *insert;
+00009     unsigned int _references;
+00010     unsigned int _is_started:1;
+00011 };
+00012 
+00013 static struct lms_db_cache _cache = {0, NULL};
+00014 
+00015 static int
+00016 _db_table_updater_playlists_0(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run) {
+00017     char *errmsg;
+00018     int r, ret;
+00019 
+00020     errmsg = NULL;
+00021     r = sqlite3_exec(db,
+00022                      "CREATE TABLE IF NOT EXISTS playlists ("
+00023                      "id INTEGER PRIMARY KEY, "
+00024                      "title TEXT, "
+00025                      "n_entries INTEGER NOT NULL"
+00026                      ")",
+00027                      NULL, NULL, &errmsg);
+00028     if (r != SQLITE_OK) {
+00029         fprintf(stderr, "ERROR: could not create 'playlists' table: %s\n",
+00030                 errmsg);
+00031         sqlite3_free(errmsg);
+00032         return -1;
+00033     }
+00034 
+00035     r = sqlite3_exec(db,
+00036                      "CREATE INDEX IF NOT EXISTS playlists_title_idx ON "
+00037                      "playlists (title)",
+00038                      NULL, NULL, &errmsg);
+00039     if (r != SQLITE_OK) {
+00040         fprintf(stderr,
+00041                 "ERROR: could not create 'playlists_title_idx' index: %s\n",
+00042                 errmsg);
+00043         sqlite3_free(errmsg);
+00044         return -2;
+00045     }
+00046 
+00047     ret = lms_db_create_trigger_if_not_exists(db,
+00048         "delete_playlists_on_files_deleted "
+00049         "DELETE ON files FOR EACH ROW BEGIN "
+00050         " DELETE FROM playlists WHERE id = OLD.id; END;");
+00051     if (ret != 0)
+00052         goto done;
+00053 
+00054     ret = lms_db_create_trigger_if_not_exists(db,
+00055         "delete_files_on_playlists_deleted "
+00056         "DELETE ON playlists FOR EACH ROW BEGIN "
+00057         " DELETE FROM files WHERE id = OLD.id; END;");
+00058 
+00059   done:
+00060     return ret;
+00061 }
+00062 
+00063 static lms_db_table_updater_t _db_table_updater_playlists[] = {
+00064     _db_table_updater_playlists_0
+00065 };
+00066 
+00067 
+00068 static int
+00069 _db_create_table_if_required(sqlite3 *db)
+00070 {
+00071     return lms_db_table_update_if_required(db, "playlists",
+00072          LMS_ARRAY_SIZE(_db_table_updater_playlists),
+00073          _db_table_updater_playlists);
+00074 }
+00075 
+00090 lms_db_playlist_t *
+00091 lms_db_playlist_new(sqlite3 *db)
+00092 {
+00093     lms_db_playlist_t *ldp;
+00094     void *p;
+00095 
+00096     if (lms_db_cache_get(&_cache, db, &p) == 0) {
+00097         ldp = p;
+00098         ldp->_references++;
+00099         return ldp;
+00100     }
+00101 
+00102     if (!db)
+00103         return NULL;
+00104 
+00105     if (_db_create_table_if_required(db) != 0) {
+00106         fprintf(stderr, "ERROR: could not create table.\n");
+00107         return NULL;
+00108     }
+00109 
+00110     ldp = calloc(1, sizeof(lms_db_playlist_t));
+00111     ldp->_references = 1;
+00112     ldp->db = db;
+00113 
+00114     if (lms_db_cache_add(&_cache, db, ldp) != 0) {
+00115         lms_db_playlist_free(ldp);
+00116         return NULL;
+00117     }
+00118 
+00119     return ldp;
+00120 }
+00121 
+00134 int
+00135 lms_db_playlist_start(lms_db_playlist_t *ldp)
+00136 {
+00137     if (!ldp)
+00138         return -1;
+00139     if (ldp->_is_started)
+00140         return 0;
+00141 
+00142     ldp->insert = lms_db_compile_stmt(ldp->db,
+00143         "INSERT OR REPLACE INTO playlists (id, title, n_entries) "
+00144         "VALUES (?, ?, ?)");
+00145     if (!ldp->insert)
+00146         return -2;
+00147 
+00148     ldp->_is_started = 1;
+00149     return 0;
+00150 }
+00151 
+00164 int
+00165 lms_db_playlist_free(lms_db_playlist_t *ldp)
+00166 {
+00167     int r;
+00168 
+00169     if (!ldp)
+00170         return -1;
+00171     if (ldp->_references == 0) {
+00172         fprintf(stderr, "ERROR: over-called lms_db_playlist_free(%p)\n", ldp);
+00173         return -1;
+00174     }
+00175 
+00176     ldp->_references--;
+00177     if (ldp->_references > 0)
+00178         return 0;
+00179 
+00180     if (ldp->insert)
+00181         lms_db_finalize_stmt(ldp->insert, "insert");
+00182 
+00183     r = lms_db_cache_del(&_cache, ldp->db, ldp);
+00184     free(ldp);
+00185 
+00186     return r;
+00187 }
+00188 
+00189 static int
+00190 _db_insert(lms_db_playlist_t *ldp, const struct lms_playlist_info *info)
+00191 {
+00192     sqlite3_stmt *stmt;
+00193     int r, ret;
+00194 
+00195     stmt = ldp->insert;
+00196 
+00197     ret = lms_db_bind_int64(stmt, 1, info->id);
+00198     if (ret != 0)
+00199         goto done;
+00200 
+00201     ret = lms_db_bind_text(stmt, 2, info->title.str, info->title.len);
+00202     if (ret != 0)
+00203         goto done;
+00204 
+00205     ret = lms_db_bind_int(stmt, 3, info->n_entries);
+00206     if (ret != 0)
+00207         goto done;
+00208 
+00209     r = sqlite3_step(stmt);
+00210     if (r != SQLITE_DONE) {
+00211         fprintf(stderr, "ERROR: could not insert playlist info: %s\n",
+00212                 sqlite3_errmsg(ldp->db));
+00213         ret = -4;
+00214         goto done;
+00215     }
+00216 
+00217     ret = 0;
+00218 
+00219   done:
+00220     lms_db_reset_stmt(stmt);
+00221 
+00222     return ret;
+00223 }
+00224 
+00236 int
+00237 lms_db_playlist_add(lms_db_playlist_t *ldp, struct lms_playlist_info *info)
+00238 {
+00239     if (!ldp)
+00240         return -1;
+00241     if (!info)
+00242         return -2;
+00243     if (info->id < 1)
+00244         return -3;
+00245 
+00246     return _db_insert(ldp, info);
+00247 }
+

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__db__playlist_8c.html b/www/api/lightmediascanner__db__playlist_8c.html new file mode 100644 index 0000000..6b62a9b --- /dev/null +++ b/www/api/lightmediascanner__db__playlist_8c.html @@ -0,0 +1,92 @@ + + +Light Media Scanner: src/lib/lightmediascanner_db_playlist.c File Reference + + + + + +
+ +
+

src/lib/lightmediascanner_db_playlist.c File Reference

#include <lightmediascanner_db.h>
+#include "lightmediascanner_db_private.h"
+#include <stdlib.h>
+#include <stdio.h>
+ +

+Include dependency graph for lightmediascanner_db_playlist.c:

+ + + +

+Go to the source code of this file. + + + + + + + + + + +

Functions

lms_db_playlist_tlms_db_playlist_new (sqlite3 *db)
int lms_db_playlist_start (lms_db_playlist_t *ldp)
int lms_db_playlist_free (lms_db_playlist_t *ldp)
int lms_db_playlist_add (lms_db_playlist_t *ldp, struct lms_playlist_info *info)
+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int lms_db_playlist_add (lms_db_playlist_t ldp,
struct lms_playlist_info info 
)
+
+
+ +

+Add playlist file to DB.

+This is usually called from plugin's parse() callback.

+

Parameters:
+ + + +
ldp handle returned by lms_db_playlist_new().
info playlist information to store.
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 237 of file lightmediascanner_db_playlist.c. +

+References lms_playlist_info::id. +

+

+


Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__db__playlist_8c__incl.map b/www/api/lightmediascanner__db__playlist_8c__incl.map new file mode 100644 index 0000000..3e17143 --- /dev/null +++ b/www/api/lightmediascanner__db__playlist_8c__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/www/api/lightmediascanner__db__playlist_8c__incl.md5 b/www/api/lightmediascanner__db__playlist_8c__incl.md5 new file mode 100644 index 0000000..d69b864 --- /dev/null +++ b/www/api/lightmediascanner__db__playlist_8c__incl.md5 @@ -0,0 +1 @@ +7f27c971bdef77eda7ac4a4e6b647a3a \ No newline at end of file diff --git a/www/api/lightmediascanner__db__playlist_8c__incl.png b/www/api/lightmediascanner__db__playlist_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..6c4a06a0858a564e365bf56f4e4bc3897590d9e6 GIT binary patch literal 4121 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 literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__private_8h-source.html b/www/api/lightmediascanner__db__private_8h-source.html new file mode 100644 index 0000000..d915bab --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h-source.html @@ -0,0 +1,100 @@ + + +Light Media Scanner: src/lib/lightmediascanner_db_private.h Source File + + + + + +
+ +
+

src/lib/lightmediascanner_db_private.h

Go to the documentation of this file.
00001 
+00021 #ifndef _LIGHTMEDIASCANNER_DB_PRIVATE_H_
+00022 #define _LIGHTMEDIASCANNER_DB_PRIVATE_H_ 1
+00023 
+00024 #ifdef __GNUC__
+00025 # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+00026 #  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))
+00027 # else
+00028 #  define GNUC_NON_NULL(...)
+00029 # endif
+00030 #else
+00031 #  define GNUC_NON_NULL(...)
+00032 #endif
+00033 
+00034 #include <sqlite3.h>
+00035 #include <sys/types.h>
+00036 #include "lightmediascanner_plugin.h"
+00037 
+00038 sqlite3_stmt *lms_db_compile_stmt(sqlite3 *db, const char *sql) GNUC_NON_NULL(1, 2);
+00039 int lms_db_finalize_stmt(sqlite3_stmt *stmt, const char *name) GNUC_NON_NULL(1, 2);
+00040 int lms_db_reset_stmt(sqlite3_stmt *stmt) GNUC_NON_NULL(1);
+00041 int lms_db_bind_text(sqlite3_stmt *stmt, int col, const char *text, int len) GNUC_NON_NULL(1);
+00042 int lms_db_bind_blob(sqlite3_stmt *stmt, int col, const void *blob, int len) GNUC_NON_NULL(1);
+00043 int lms_db_bind_int64(sqlite3_stmt *stmt, int col, int64_t value) GNUC_NON_NULL(1);
+00044 int lms_db_bind_int64_or_null(sqlite3_stmt *stmt, int col, int64_t *p_value) GNUC_NON_NULL(1);
+00045 int lms_db_bind_int(sqlite3_stmt *stmt, int col, int value) GNUC_NON_NULL(1);
+00046 int lms_db_bind_double(sqlite3_stmt *stmt, int col, double value) GNUC_NON_NULL(1);
+00047 int lms_db_create_trigger_if_not_exists(sqlite3 *db, const char *sql) GNUC_NON_NULL(1, 2);
+00048 
+00049 int lms_db_table_version_get(sqlite3 *db, const char *table) GNUC_NON_NULL(1, 2);
+00050 int lms_db_table_version_set(sqlite3 *db, const char *table, unsigned int version) GNUC_NON_NULL(1, 2);
+00051 
+00052 typedef int (*lms_db_table_updater_t)(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run);
+00053 
+00054 int lms_db_table_update(sqlite3 *db, const char *table, unsigned int current_version, unsigned int last_version, const lms_db_table_updater_t *updaters) GNUC_NON_NULL(1, 2, 5);
+00055 int lms_db_table_update_if_required(sqlite3 *db, const char *table, unsigned int last_version, lms_db_table_updater_t *updaters) GNUC_NON_NULL(1, 2, 4);
+00056 
+00057 struct lms_db_cache_entry {
+00058     const sqlite3 *db;
+00059     void *data;
+00060 };
+00061 
+00062 struct lms_db_cache {
+00063     int size;
+00064     struct lms_db_cache_entry *entries;
+00065 };
+00066 
+00067 int lms_db_cache_add(struct lms_db_cache *cache, const sqlite3 *db, void *data) GNUC_NON_NULL(1, 2, 3);
+00068 int lms_db_cache_del(struct lms_db_cache *cache, const sqlite3 *db, void *data) GNUC_NON_NULL(1, 2, 3);
+00069 int lms_db_cache_get(struct lms_db_cache *cache, const sqlite3 *db, void **pdata) GNUC_NON_NULL(1, 2, 3);
+00070 
+00071 int lms_db_create_core_tables_if_required(sqlite3 *db) GNUC_NON_NULL(1);
+00072 
+00073 sqlite3_stmt *lms_db_compile_stmt_begin_transaction(sqlite3 *db) GNUC_NON_NULL(1);
+00074 sqlite3_stmt *lms_db_compile_stmt_end_transaction(sqlite3 *db) GNUC_NON_NULL(1);
+00075 sqlite3_stmt *lms_db_compile_stmt_get_file_info(sqlite3 *db) GNUC_NON_NULL(1);
+00076 sqlite3_stmt *lms_db_compile_stmt_insert_file_info(sqlite3 *db) GNUC_NON_NULL(1);
+00077 sqlite3_stmt *lms_db_compile_stmt_update_file_info(sqlite3 *db) GNUC_NON_NULL(1);
+00078 sqlite3_stmt *lms_db_compile_stmt_delete_file_info(sqlite3 *db) GNUC_NON_NULL(1);
+00079 sqlite3_stmt *lms_db_compile_stmt_set_file_dtime(sqlite3 *db) GNUC_NON_NULL(1);
+00080 sqlite3_stmt *lms_db_compile_stmt_get_files(sqlite3 *db) GNUC_NON_NULL(1);
+00081 
+00082 int lms_db_begin_transaction(sqlite3_stmt *stmt) GNUC_NON_NULL(1);
+00083 int lms_db_end_transaction(sqlite3_stmt *stmt) GNUC_NON_NULL(1);
+00084 int lms_db_update_file_info(sqlite3_stmt *stmt, const struct lms_file_info *finfo) GNUC_NON_NULL(1, 2);
+00085 int lms_db_get_file_info(sqlite3_stmt *stmt, struct lms_file_info *finfo) GNUC_NON_NULL(1, 2);
+00086 int lms_db_insert_file_info(sqlite3_stmt *stmt, struct lms_file_info *finfo) GNUC_NON_NULL(1, 2);
+00087 int lms_db_delete_file_info(sqlite3_stmt *stmt, const struct lms_file_info *finfo) GNUC_NON_NULL(1, 2);
+00088 int lms_db_set_file_dtime(sqlite3_stmt *stmt, const struct lms_file_info *finfo) GNUC_NON_NULL(1, 2);
+00089 int lms_db_get_files(sqlite3_stmt *stmt, const char *path, int len) GNUC_NON_NULL(1, 2);
+00090 
+00091 
+00092 
+00093 #endif /* _LIGHTMEDIASCANNER_DB_PRIVATE_H_ */
+

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__db__private_8h.html b/www/api/lightmediascanner__db__private_8h.html new file mode 100644 index 0000000..72e45ac --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h.html @@ -0,0 +1,1285 @@ + + +Light Media Scanner: src/lib/lightmediascanner_db_private.h File Reference + + + + + +
+ +
+

src/lib/lightmediascanner_db_private.h File Reference

#include <sqlite3.h>
+#include <sys/types.h>
+#include "lightmediascanner_plugin.h"
+ +

+Include dependency graph for lightmediascanner_db_private.h:

+ + + +

+This graph shows which files directly or indirectly include this file:

+ + + +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  lms_db_cache_entry
struct  lms_db_cache

Defines

#define _LIGHTMEDIASCANNER_DB_PRIVATE_H_   1
#define GNUC_NON_NULL(...)

Functions

sqlite3_stmt * lms_db_compile_stmt (sqlite3 *db, const char *sql) GNUC_NON_NULL(1
sqlite3_stmt *int lms_db_finalize_stmt (sqlite3_stmt *stmt, const char *name) GNUC_NON_NULL(1
sqlite3_stmt *int int lms_db_reset_stmt (sqlite3_stmt *stmt) GNUC_NON_NULL(1)
int lms_db_bind_text (sqlite3_stmt *stmt, int col, const char *text, int len) GNUC_NON_NULL(1)
int lms_db_bind_blob (sqlite3_stmt *stmt, int col, const void *blob, int len) GNUC_NON_NULL(1)
int lms_db_bind_int64 (sqlite3_stmt *stmt, int col, int64_t value) GNUC_NON_NULL(1)
int lms_db_bind_int64_or_null (sqlite3_stmt *stmt, int col, int64_t *p_value) GNUC_NON_NULL(1)
int lms_db_bind_int (sqlite3_stmt *stmt, int col, int value) GNUC_NON_NULL(1)
int lms_db_bind_double (sqlite3_stmt *stmt, int col, double value) GNUC_NON_NULL(1)
int lms_db_create_trigger_if_not_exists (sqlite3 *db, const char *sql) GNUC_NON_NULL(1
int int lms_db_table_version_get (sqlite3 *db, const char *table) GNUC_NON_NULL(1
int int int lms_db_table_version_set (sqlite3 *db, const char *table, unsigned int version) GNUC_NON_NULL(1
int lms_db_table_update (sqlite3 *db, const char *table, unsigned int current_version, unsigned int last_version, const lms_db_table_updater_t *updaters) GNUC_NON_NULL(1
int int lms_db_table_update_if_required (sqlite3 *db, const char *table, unsigned int last_version, lms_db_table_updater_t *updaters) GNUC_NON_NULL(1
int lms_db_cache_add (struct lms_db_cache *cache, const sqlite3 *db, void *data) GNUC_NON_NULL(1
int int lms_db_cache_del (struct lms_db_cache *cache, const sqlite3 *db, void *data) GNUC_NON_NULL(1
int int int lms_db_cache_get (struct lms_db_cache *cache, const sqlite3 *db, void **pdata) GNUC_NON_NULL(1
int int int int lms_db_create_core_tables_if_required (sqlite3 *db) GNUC_NON_NULL(1)
sqlite3_stmt * lms_db_compile_stmt_begin_transaction (sqlite3 *db) GNUC_NON_NULL(1)
sqlite3_stmt * lms_db_compile_stmt_end_transaction (sqlite3 *db) GNUC_NON_NULL(1)
sqlite3_stmt * lms_db_compile_stmt_get_file_info (sqlite3 *db) GNUC_NON_NULL(1)
sqlite3_stmt * lms_db_compile_stmt_insert_file_info (sqlite3 *db) GNUC_NON_NULL(1)
sqlite3_stmt * lms_db_compile_stmt_update_file_info (sqlite3 *db) GNUC_NON_NULL(1)
sqlite3_stmt * lms_db_compile_stmt_delete_file_info (sqlite3 *db) GNUC_NON_NULL(1)
sqlite3_stmt * lms_db_compile_stmt_set_file_dtime (sqlite3 *db) GNUC_NON_NULL(1)
sqlite3_stmt * lms_db_compile_stmt_get_files (sqlite3 *db) GNUC_NON_NULL(1)
int lms_db_begin_transaction (sqlite3_stmt *stmt) GNUC_NON_NULL(1)
int lms_db_end_transaction (sqlite3_stmt *stmt) GNUC_NON_NULL(1)
int lms_db_update_file_info (sqlite3_stmt *stmt, const struct lms_file_info *finfo) GNUC_NON_NULL(1
int int lms_db_get_file_info (sqlite3_stmt *stmt, struct lms_file_info *finfo) GNUC_NON_NULL(1
int int int lms_db_insert_file_info (sqlite3_stmt *stmt, struct lms_file_info *finfo) GNUC_NON_NULL(1
int int int int lms_db_delete_file_info (sqlite3_stmt *stmt, const struct lms_file_info *finfo) GNUC_NON_NULL(1
int int int int int lms_db_set_file_dtime (sqlite3_stmt *stmt, const struct lms_file_info *finfo) GNUC_NON_NULL(1
int int int int int int lms_db_get_files (sqlite3_stmt *stmt, const char *path, int len) GNUC_NON_NULL(1

Variables

int int int typedef int(*) lms_db_table_updater_t (sqlite3 *db, const char *table, unsigned int current_version, int is_last_run)
+


Define Documentation

+ +
+
+ + + + +
#define _LIGHTMEDIASCANNER_DB_PRIVATE_H_   1
+
+
+ +

+Copyright (C) 2007 by INdT

+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.

+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.

+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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

+

Author:
Gustavo Sverzut Barbieri <gustavo.barbieri@openbossa.org>
+ +

+Definition at line 22 of file lightmediascanner_db_private.h. +

+

+ +

+
+ + + + + + + + + +
#define GNUC_NON_NULL ( ...   ) 
+
+
+ +

+ +

+Definition at line 31 of file lightmediascanner_db_private.h. +

+

+


Function Documentation

+ +
+
+ + + + + + + + + +
int lms_db_begin_transaction (sqlite3_stmt *  stmt  ) 
+
+
+ +

+ +

+Definition at line 512 of file lightmediascanner_db_common.c. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_bind_blob (sqlite3_stmt *  stmt,
int  col,
const void *  blob,
int  len 
)
+
+
+ +

+ +

+Definition at line 148 of file lightmediascanner_db_common.c. +

+Referenced by lms_db_get_file_info(), lms_db_get_files(), and lms_db_insert_file_info(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_bind_double (sqlite3_stmt *  stmt,
int  col,
double  value 
)
+
+
+ +

+ +

+Definition at line 231 of file lightmediascanner_db_common.c. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_bind_int (sqlite3_stmt *  stmt,
int  col,
int  value 
)
+
+ +

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_bind_int64 (sqlite3_stmt *  stmt,
int  col,
int64_t  value 
)
+
+
+ +

+ +

+Definition at line 171 of file lightmediascanner_db_common.c. +

+Referenced by lms_db_delete_file_info(), and lms_db_set_file_dtime(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_bind_int64_or_null (sqlite3_stmt *  stmt,
int  col,
int64_t *  p_value 
)
+
+
+ +

+ +

+Definition at line 190 of file lightmediascanner_db_common.c. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_bind_text (sqlite3_stmt *  stmt,
int  col,
const char *  text,
int  len 
)
+
+
+ +

+ +

+Definition at line 125 of file lightmediascanner_db_common.c. +

+Referenced by lms_db_table_version_get(), and lms_db_table_version_set(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_cache_add (struct lms_db_cache cache,
const sqlite3 *  db,
void *  data 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int int lms_db_cache_del (struct lms_db_cache cache,
const sqlite3 *  db,
void *  data 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int int int lms_db_cache_get (struct lms_db_cache cache,
const sqlite3 *  db,
void **  pdata 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
sqlite3_stmt* lms_db_compile_stmt (sqlite3 *  db,
const char *  sql 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
sqlite3_stmt* lms_db_compile_stmt_begin_transaction (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 506 of file lightmediascanner_db_common.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
sqlite3_stmt* lms_db_compile_stmt_delete_file_info (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 691 of file lightmediascanner_db_common.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
sqlite3_stmt* lms_db_compile_stmt_end_transaction (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 533 of file lightmediascanner_db_common.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
sqlite3_stmt* lms_db_compile_stmt_get_file_info (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 560 of file lightmediascanner_db_common.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
sqlite3_stmt* lms_db_compile_stmt_get_files (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 756 of file lightmediascanner_db_common.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
sqlite3_stmt* lms_db_compile_stmt_insert_file_info (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 646 of file lightmediascanner_db_common.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
sqlite3_stmt* lms_db_compile_stmt_set_file_dtime (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 721 of file lightmediascanner_db_common.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
sqlite3_stmt* lms_db_compile_stmt_update_file_info (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 602 of file lightmediascanner_db_common.c. +

+References lms_db_compile_stmt(). +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + +
int int int int lms_db_create_core_tables_if_required (sqlite3 *  db  ) 
+
+
+ +

+ +

+Definition at line 455 of file lightmediascanner_db_common.c. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_db_create_trigger_if_not_exists (sqlite3 *  db,
const char *  sql 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int int int int lms_db_delete_file_info (sqlite3_stmt *  stmt,
const struct lms_file_info finfo 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
int lms_db_end_transaction (sqlite3_stmt *  stmt  ) 
+
+
+ +

+ +

+Definition at line 539 of file lightmediascanner_db_common.c. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
sqlite3_stmt* int lms_db_finalize_stmt (sqlite3_stmt *  stmt,
const char *  name 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int int lms_db_get_file_info (sqlite3_stmt *  stmt,
struct lms_file_info finfo 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int int int int int int lms_db_get_files (sqlite3_stmt *  stmt,
const char *  path,
int  len 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int int int lms_db_insert_file_info (sqlite3_stmt *  stmt,
struct lms_file_info finfo 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
sqlite3_stmt* int int lms_db_reset_stmt (sqlite3_stmt *  stmt  ) 
+
+ +

+ +

+
+ + + + + + + + + + + + + + + + + + +
int int int int int lms_db_set_file_dtime (sqlite3_stmt *  stmt,
const struct lms_file_info finfo 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int lms_db_table_update (sqlite3 *  db,
const char *  table,
unsigned int  current_version,
unsigned int  last_version,
const lms_db_table_updater_t updaters 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int int lms_db_table_update_if_required (sqlite3 *  db,
const char *  table,
unsigned int  last_version,
lms_db_table_updater_t updaters 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int int lms_db_table_version_get (sqlite3 *  db,
const char *  table 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int int int lms_db_table_version_set (sqlite3 *  db,
const char *  table,
unsigned int  version 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_db_update_file_info (sqlite3_stmt *  stmt,
const struct lms_file_info finfo 
)
+
+
+ +

+ +

+

+


Variable Documentation

+ +
+
+ + + + +
int int int typedef int(*) lms_db_table_updater_t(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run)
+
+
+ +

+ +

+Definition at line 52 of file lightmediascanner_db_private.h. +

+

+


Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.map b/www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.map new file mode 100644 index 0000000..e7045d2 --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.map @@ -0,0 +1,2 @@ + + 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 index 0000000..a35505b --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.md5 @@ -0,0 +1 @@ +597cf289a37dec2c079a7e40c848ec2c \ No newline at end of file diff --git a/www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.png b/www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..de691e27b47eb74ff13d37d7e72e1964616615d8 GIT binary patch literal 907 zcmV;619bd}P)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00SdQL_t(&f$f@$ZR0Qu zhC4zXKm*h(7~bOqS`+6`8NfBEJF6`Sgs|HD*;jFgV}7 z#YYus*_C!n<#o9yiSJtmEzS2DS{{jXXhZAa3nyGcTfa1`+;asjkCZSpp{+{+Ev!Xc zbf4b{v?{U-t%a|KmfITaF=$ofHMH|fsi4^+=Zk~34pu-zcyWfn0dB(`GJ@q+ z#P+m!MpdN&N#hupr2$RTT?|^MJ+0ChQvwaTJ@Uaq!FeXBpPJA#y%w}Bue2>L(t@*f z8#Q?e%{0N)+k^HM_cYiZ-GH{_mA1r1Tr?eMb|F9sO{p6+AImy!oWN%Zt>2#K0L?yY zPmV;oj@~EGh-89Z2agI`xRpww_1p6tfW@H2_T)&^d-^Sr4-&Gc5wW}l5$o9-G!{&u z?bUAycz^1PN@@%#CA9-|s}F#@d_K+qn0jB4M6HSL1b0JLuQJ%MYL zYiPM{9q{{}J@2IZko`9g?61h`uF8aVmEDiXPiRB36WW06gf<{M|1DuacK!p*fK6xv hHlYpJgf?KGe*q2F&xQm9CR_jj002ovPDHLkV1jeSqon`< literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.map b/www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.map new file mode 100644 index 0000000..d94cf4b --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.map @@ -0,0 +1,2 @@ + + 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 index 0000000..7804ae4 --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.md5 @@ -0,0 +1 @@ +4140a991699f501c103f1dd52e357650 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.png b/www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..4149e9462aad65bd696e4eb6f9968261d02057f9 GIT binary patch literal 886 zcmV-+1Bv{JP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00Rz5L_t(&f$f@$ZQL*n zhBHEJKm(jtFf@pJ`1fC>5=n`A`s8zyriF+ct}-7oKa+%<=3|*MD4!pH`wspcnXJZT zvKp7kYFvnw!S_n=|mt-IwJu zu~BDL$A00WuqqwketZjf2H|;9GTRne!GHMn-AgOj${V|jPG>j*6-Lw<)iqgdk0i<= zEeyy;ki9r`@kP1=1uOWhpS19G1t|ntiH=iO9nB-iI{L}V1F9T;Z9R#s;Ilqx;h91n zKCMK@tW-zYdtPfV`Xh;=J?K|~hwLCGan)m0op!CHUH(TZ z(uZd|=MNgrPpdl1Rb_+U9xfuxvdqEjwahuM^ejrfNeOXF(QG&L;n}W@!WV8LPjwqiX1}>BaNN?>|MG2K6rlMevg%x9xL(w8SjIyvb-e!`MdM0EHBAqH7=9Y zxJ*{#GFgqw7qfc%Kd#@CZkAsg{$A8${_V#FnXJZTvKp7kYFs{l1B42b=8|gdA^-pY M07*qoM6N<$g5g50jQ{`u literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.map b/www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.map new file mode 100644 index 0000000..49aeb2f --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.map @@ -0,0 +1,2 @@ + + 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 index 0000000..eda4808 --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.md5 @@ -0,0 +1 @@ +5a19337cd92bc81a6609fb3efc0944b8 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.png b/www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..c91b45cd649346870f0bbe2282a657d1c9667ec2 GIT binary patch literal 893 zcmV-@1A_dCP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00R|CL_t(&f$f@$ZR0Qu zhC4zXKm)`p1RBI={QIwR;zKV>a?1GHYf=4ZU|6JR^E0W)ZQqtDgWli%_Z|E!O7d;ZU&Y?s1LUN%i$HcehOOj&7!CJo`Y-eF866-}`M{bEc?mZtHK@(RjuQ z&B$%NOU8v0nwxl{iq|2-6JE6^szc4IA0k-WTMfL{l; z3t9wxrZ(Y~ZA^fe-A2*xMU>o+bQYQD71Sl2jd<00Yt9{BQcet@;zf0N;3dVX;3!I3 zztUax>I+B>Q}9|kyri5sJLNU#$5>xNsNluro1e%MpO!;B>+^~U_IN$&`g-I^vCI;{ z1FsYeVjJ@+)_Wpi2W>T6jJyow8@Wigas!)x4+;eeQb)sNzd za$e%a-x|fB9y~1y4KHezlGnH&!vR%&XY1l1-A5_Tu$kCoDx8 zK#Za`CySWttoOx!m6s~%YW?C#OZ%o<6erlUAJrBjclY + 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 index 0000000..74dd657 --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.md5 @@ -0,0 +1 @@ +3cc06df5622a01305fd152e7404ce386 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.png b/www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..68595e646ca24dc144fb5ccb1337596535ffeaae GIT binary patch literal 857 zcmV-f1E&0mP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00QwzL_t(&f$f@YZsZ^g zhI@oE5(k(ZVMjR#ir)KQrC=Ka0jD!NTXlcfY8wTA5I@)qY5Nge4Eg-{?I-wu#o5^6 zY;18hwiGrIKP=Yd|7c<>{CiOovw8fi>?WIcSN1wedMm86vBlZg;%sbjHnun$Tbzw8 z&c>GCVspD+XZ4cIQ6zkND{RkZ$CwfJW0~kNSzZXT^|8nE(e<`%Eh~&U#I!!>VzR6b z)5vYRb9S8(O62c}G#TpVX*Q#!n2pvth{7f;*le2B>5(tkjFw`C6&nhFw$APnA+9OE z%Vx5?WySqHA0rbE+_-!6k% zWL!7-m9VWAJ^Z#Q8RK}__{Vl(Dg*M4Fng#p=|2fub#F1+8wvPN3uQ{4bs^c|b9V8dlX znFt%Br)u3WjgAeKWuqVJ%0$$=B^xS&W6g%kN9*R%oE}}J?963mlR~#&+_-2O8%oq* z6UMp;&56s$U{m*EN_(iA5Ke5miF6ywr8TiJd#YS;ta?hi2wF&b*R#=_`Qb~!_iXH* z$`>Fgo7PioiTR^hjtEID(bx=q!?i3kC>u;{axGC-dEr6dJMF2^y_oW)*5X0AJXrUr zen%bT*4pKFbK_pzo&8FUa{}BVv=>tg%3j5 j#M#*5Y;18hwtRj89&jnbG!up%00000NkvXXu0mjf?k%De literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.map b/www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.map new file mode 100644 index 0000000..a62f463 --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.map @@ -0,0 +1,2 @@ + + 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 index 0000000..69eaa35 --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.md5 @@ -0,0 +1 @@ +48dd492320b5d2c740f331d4213ef1e6 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.png b/www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..f22b93d0f97aa5426819fc073e63f931c1cb29be GIT binary patch literal 888 zcmV-;1Bd*HP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00R(7L_t(&f$f?LZsZ^g zhI@o&Bn~h+!bThfjsE*zWx+OYNS$We?yj&pih>`+A2vhUzHLhs^8WVIPw;QZ;-r(s zNhgbwP68)`Z11)z$=|@~@jTD)lJrp|yt@^)xv4PPL_&)z)bcje~GPeooJ6PZ>6kf5NG@6f=xCQTW!{ zyGsN!CVrPwXL-)4b+A=lF%iG!mpFBn=bU`_fwe@yHl1U}iIyLfn+5z2kJDh#!Rx@~ zk#)#A^0P7+IW-P$3$K;P>qv?0d*T#IP2Oj{CD_W4U(gwUk;XAeXR>a{X@3?`oU|<< z6G7(U(9MN(4mBsA9(eH)>WRw1GKQ$*HY#+q|KKI1BYyD?N9}O@+GmnDA!O|6Ce#yT z(dkZf%qiwDkP{WhYs`tuDwW5PosOb{EHmmk ziNl0bv5$*#%xSCZY0FL=cETy{6Zd*95ewK*#z2*EM{W(rSW}L+P=il!>%J7o>$M3-(Wq3&z zC!H)#I$4}_vN-AFYdPKfqw+PGX85(???rX%|1gxYIO$|@(#hhallR}ef_=0JLTpd~ O0000 + 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 index 0000000..e293c4e --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.md5 @@ -0,0 +1 @@ +42099300ab356ee9f37a5189393d9a29 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.png b/www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..53a30cf24b2b1a347dd65cf338e546fcaad6bbae GIT binary patch literal 927 zcmV;Q17Q4#P)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00TEkL_t(&f$f?NZsQ;j zg?ofJ5(lWSVEG=4tatybEX)rB7?RLfN>|IMksHtO@O+*jIPKRmZNzS0pT2^B%qFlw zo4^Kb0vogl%;6K}J6Ckk)$|g6Q=WlspRg{lH%s7&%6sx|0vnZ`zy@U}utC`gY*2Or z8^xXR#e!_z{*GotD{k!jB?1&2!ag7x~|`vkt;Dg09Hoo zU1$PZYhaFn>7eKAegNzg`6{rj3iEc&1}x+>1nd;~7+AO=Ctzui^VOuS$x2}R5nkLh zI}m>OJe`a_1YdN6PKpoaBM}<6lY<99f$flv=19Z`VZO;QU~2+~_+n3ZRF|i92Ra#i zG?**QC7&~26PU`|_DElFdM`O=)}T?bg1_@;|i z4J;MZ)&<5Vvq%NTHRnOs7H_ijLS11%)+`Ci(g3EZE(uttB~yhlq6`>xIpoP=p?RjL z?^?jPB-+3PgI3sPgS5~}U|M~LtzlYWTOZiBtzk&(aRb;=R@h>LxL7*C(xQ(Vm=aIG zyp^*pl)$Y9)@{jnz|m?+VUxxITLPvk1+Z>~#jR2ftlyI104xcZwIoO4ynf#^d72mo ztZX}29s2}~1#@7bC@II#NT3%l+(?T)A)(IH6`c+n`!*YQY_jOnM}$W53>0#RiU3QC zKBHQeydk*5Xwi4{;&qsjL=8TvJ}0HqSoHIaE6qq_!Ji$f3kbwT76fidy%6VHJAGYt zm}2HAHy)+W#+|n#&B#*;XkS(D?dxV&e6L;BkgLA)e&x}qu~QLX%>V*6_Gt9V4!;Gg zX+?goq*}-I1RkqA23G2x1Af=D + 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 index 0000000..25e6015 --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.md5 @@ -0,0 +1 @@ +11ab49ab26e02addb26e1495f2117883 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.png b/www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..21442155ba7000d6253e5e2845870199255df4cb GIT binary patch literal 904 zcmeAS@N?(olHy`uVBq!ia0y~yV2TB@RauyUWS5iUTp%SH;1lBd?>`XylawsjzkmPb z%a?(|K)%zj{mDQUQ%R6tFatx`p1ajkAiQ{gkPbW-LM za{d1=JaR*CBZKkdWpB&2)~xL6=s?u|K}IInSRJG&de7B{Z)(G{`;|yZ`NXuAAf^xbcy#_EoQ#! zbFpHchs@lB8ub}AQ>H&oFE0|?zc%}vNNHT&d-)p|E0%GdoqN0Lc@MYx3+Fv6x~A99 z41e4CO3AJ8q+-&Jip>vMce2H;POI{I%((tm@SO{fT_2vmm$+-+_PsN|i0+X(A6^-n zw^LrYb4I`lM&b3xJ{ztV*!Otuz1v1H&ZW;0e(yZTdCsrvo12YLT|llAQ~6W6;G;Fqg+d)J<8)q<(h z%h*yBPejT5Dp9=MC#-+u48PQoUrgaFcYVyBP0jUjIA-M^vti}(FNP;le@D0n#dXYl zZ_@FVRg+1ov$rx;TCn3x-r^VEmAu{^xA5{wVJ*CPvE#btdtb9PZQ|1>`-=vjW$sF7 zUH+k~^tEZQhqlRA){Mg#3jetKj`*cvW0jt0M5{GxJSLwm+TVRvQ;1P#YH= z8y`JyikIi}mEK(8AFa0K9$9_k{n1O$w_f?W^@*oU@d53(-&+=~TAyn9QA_MnuHlq~ z!`XNGA2Q{f(*CYoy=d0-UxACK?D?}`U()6&dyf5;&^xebPm%qm^j~wMKX*-!wVhZQ zYRjJI9OqcM@S*7KmLQgLp|{`Tw&iO~yfLlD_@+(x^y`&db$j{Z7&BXMFdypv{`=9M zRb~a%7wg`?X#f8EjtNkajJr?zu1VpAaZA7MSj{PYbc#liOJR@iufQC|qVF~O(R~hQ zzP~PZ$zA>Y>Z>X + + + + + + 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 index 0000000..816631d --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h__dep__incl.md5 @@ -0,0 +1 @@ +022f4e74638a0b634545ff86621129c8 \ No newline at end of file diff --git a/www/api/lightmediascanner__db__private_8h__dep__incl.png b/www/api/lightmediascanner__db__private_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..a89e14c1f9fa9595163e378d98f281c45cb662eb GIT binary patch literal 3775 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 literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__private_8h__incl.map b/www/api/lightmediascanner__db__private_8h__incl.map new file mode 100644 index 0000000..e8bbd5c --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/www/api/lightmediascanner__db__private_8h__incl.md5 b/www/api/lightmediascanner__db__private_8h__incl.md5 new file mode 100644 index 0000000..c221095 --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h__incl.md5 @@ -0,0 +1 @@ +1f30ce8e217e3bccc71953d3836e1a9f \ No newline at end of file diff --git a/www/api/lightmediascanner__db__private_8h__incl.png b/www/api/lightmediascanner__db__private_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..ce5e2e737f68b5e334a2531ac6ff87ba0949fb5a GIT binary patch literal 2603 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 N002ovPDHLkV1nK^^YQ=y literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.map b/www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.map new file mode 100644 index 0000000..ad44bfe --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.map @@ -0,0 +1,2 @@ + + 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 index 0000000..41fed04 --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.md5 @@ -0,0 +1 @@ +70af470fb9b373dbdde441f9c228fdac \ No newline at end of file diff --git a/www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.png b/www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..434c52be4b428ef6bc76cd5a064110413baaada8 GIT binary patch literal 925 zcmV;O17iG%P)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00T8iL_t(&f$f?Lj^iK< zhUW@Y;sD7JHp)Sw$oId>f*%0`ZtG1oJG;V~D%03F_{(ofI`b8#y>DNCdjkKIOXjWJ z{m^+lnSGFa*$sG-eNcQjE)T^l?2|}pMr`CW(@Kqy9&$+_z_ivyrk*9ow>w2eehddZ znSJ@mIlF;IlMjk-NNXipIWLaKWdMHzftOS8Rn&ojDq5*JAQeE?77Ae}7~-Q&tbABM zoTU?G03BFVJ5$DfgzeXA*dnyjwE1>J))p!t5)AQCCssaO$TBf2`x@$mS101wi-=qW z^U6De7FS)XFSNy%EVO`S z$``{gjtHT=8_~il&oM2QifC&qgM^RHA|D4mt!=Ytl~tY{V_JN>MOzF6E}0m#7FoCW zx|Oy__yt32|Elq3{i02a+aTci%r2<}`k??Ed)FX#vF!6HH9PP`^E z+RMwLLg#E(9%#P0Hj>vnh{2|WX$=FAmhZ{u*&g0! zx1STAZ;q@i&uQtreZUWTPJB_P&#Wx}%~SP@I(=qknY27vCM{2vNz0RE((+{a2(24` z?EX`;X7ritCarsE=YNg(Y|`@Bq~) 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 index 0000000..c6f38a0 --- /dev/null +++ b/www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.md5 @@ -0,0 +1 @@ +0559150039d6a3e46b15f46277f3053f \ No newline at end of file diff --git a/www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.png b/www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..d7b9e7911232363a192f5dcabeb91ceef04658d9 GIT binary patch literal 543 zcmV+)0^t3LP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00Fm2L_t(oh3%MOl7k=& zg?j}3!2#q79q+M@^X`9@B`*O{aN1pMx9yT?2MGvYUkF$){mWZ-`D=pP))>#RcVTom zV$;sZ$41S^C*$>q?J}OEVqRU>V<6SK}AH2 z^$kX9GglbRm90mRQN*n>4sktFx0Q}*)kQ|_^aI99tWynokz%dR2?gWO$Gny)Z9NhY zic<;eJ&Zwe&dj`+EobPwW;r9j0%`?M$iD4vO%1V2@wm6wbY zubnf(7$b_!j#N5}P@83YPi6OZwLckE=abIs>IrkN{oiMb#@HA?p7G$jjvdBBqvqqk h%R8x8x5jvmb>HYl5j|Uwk9+_C002ovPDHLkV1nBy`Ue02 literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__db__video_8c-source.html b/www/api/lightmediascanner__db__video_8c-source.html new file mode 100644 index 0000000..917251a --- /dev/null +++ b/www/api/lightmediascanner__db__video_8c-source.html @@ -0,0 +1,236 @@ + + +Light Media Scanner: src/lib/lightmediascanner_db_video.c Source File + + + + + +
+ +
+

src/lib/lightmediascanner_db_video.c

Go to the documentation of this file.
00001 #include <lightmediascanner_db.h>
+00002 #include "lightmediascanner_db_private.h"
+00003 #include <stdlib.h>
+00004 #include <stdio.h>
+00005 
+00006 struct lms_db_video {
+00007     sqlite3 *db;
+00008     sqlite3_stmt *insert;
+00009     unsigned int _references;
+00010     unsigned int _is_started:1;
+00011 };
+00012 
+00013 static struct lms_db_cache _cache = {0, NULL};
+00014 
+00015 static int
+00016 _db_table_updater_videos_0(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run) {
+00017     char *errmsg;
+00018     int r, ret;
+00019 
+00020     errmsg = NULL;
+00021     r = sqlite3_exec(db,
+00022                      "CREATE TABLE IF NOT EXISTS videos ("
+00023                      "id INTEGER PRIMARY KEY, "
+00024                      "title TEXT, "
+00025                      "artist TEXT"
+00026                      ")",
+00027                      NULL, NULL, &errmsg);
+00028     if (r != SQLITE_OK) {
+00029         fprintf(stderr, "ERROR: could not create 'videos' table: %s\n", errmsg);
+00030         sqlite3_free(errmsg);
+00031         return -1;
+00032     }
+00033 
+00034     r = sqlite3_exec(db,
+00035                      "CREATE INDEX IF NOT EXISTS videos_title_idx ON videos ("
+00036                      "title"
+00037                      ")",
+00038                      NULL, NULL, &errmsg);
+00039     if (r != SQLITE_OK) {
+00040         fprintf(stderr,
+00041                 "ERROR: could not create 'videos_title_idx' index: %s\n",
+00042                 errmsg);
+00043         sqlite3_free(errmsg);
+00044         return -2;
+00045     }
+00046 
+00047     r = sqlite3_exec(db,
+00048                      "CREATE INDEX IF NOT EXISTS videos_artist_idx ON videos ("
+00049                      "artist"
+00050                      ")",
+00051                      NULL, NULL, &errmsg);
+00052     if (r != SQLITE_OK) {
+00053         fprintf(stderr,
+00054                 "ERROR: could not create 'videos_artist_idx' index: %s\n",
+00055                 errmsg);
+00056         sqlite3_free(errmsg);
+00057         return -3;
+00058     }
+00059 
+00060     ret = lms_db_create_trigger_if_not_exists(db,
+00061         "delete_videos_on_files_deleted "
+00062         "DELETE ON files FOR EACH ROW BEGIN "
+00063         " DELETE FROM videos WHERE id = OLD.id; END;");
+00064     if (ret != 0)
+00065         goto done;
+00066 
+00067     ret = lms_db_create_trigger_if_not_exists(db,
+00068         "delete_files_on_videos_deleted "
+00069         "DELETE ON videos FOR EACH ROW BEGIN "
+00070         " DELETE FROM files WHERE id = OLD.id; END;");
+00071 
+00072   done:
+00073     return ret;
+00074 }
+00075 
+00076 static lms_db_table_updater_t _db_table_updater_videos[] = {
+00077     _db_table_updater_videos_0
+00078 };
+00079 
+00080 
+00081 static int
+00082 _db_create_table_if_required(sqlite3 *db)
+00083 {
+00084     return lms_db_table_update_if_required(db, "videos",
+00085          LMS_ARRAY_SIZE(_db_table_updater_videos),
+00086          _db_table_updater_videos);
+00087 }
+00088 
+00103 lms_db_video_t *
+00104 lms_db_video_new(sqlite3 *db)
+00105 {
+00106     lms_db_video_t *ldv;
+00107     void *p;
+00108 
+00109     if (lms_db_cache_get(&_cache, db, &p) == 0) {
+00110         ldv = p;
+00111         ldv->_references++;
+00112         return ldv;
+00113     }
+00114 
+00115     if (!db)
+00116         return NULL;
+00117 
+00118     if (_db_create_table_if_required(db) != 0) {
+00119         fprintf(stderr, "ERROR: could not create table.\n");
+00120         return NULL;
+00121     }
+00122 
+00123     ldv = calloc(1, sizeof(lms_db_video_t));
+00124     ldv->_references = 1;
+00125     ldv->db = db;
+00126 
+00127     if (lms_db_cache_add(&_cache, db, ldv) != 0) {
+00128         lms_db_video_free(ldv);
+00129         return NULL;
+00130     }
+00131 
+00132     return ldv;
+00133 }
+00134 
+00147 int
+00148 lms_db_video_start(lms_db_video_t *ldv)
+00149 {
+00150     if (!ldv)
+00151         return -1;
+00152     if (ldv->_is_started)
+00153         return 0;
+00154 
+00155     ldv->insert = lms_db_compile_stmt(ldv->db,
+00156         "INSERT OR REPLACE INTO videos (id, title, artist) VALUES (?, ?, ?)");
+00157     if (!ldv->insert)
+00158         return -2;
+00159 
+00160     ldv->_is_started = 1;
+00161     return 0;
+00162 }
+00163 
+00176 int
+00177 lms_db_video_free(lms_db_video_t *ldv)
+00178 {
+00179     int r;
+00180 
+00181     if (!ldv)
+00182         return -1;
+00183     if (ldv->_references == 0) {
+00184         fprintf(stderr, "ERROR: over-called lms_db_video_free(%p)\n", ldv);
+00185         return -1;
+00186     }
+00187 
+00188     ldv->_references--;
+00189     if (ldv->_references > 0)
+00190         return 0;
+00191 
+00192     if (ldv->insert)
+00193         lms_db_finalize_stmt(ldv->insert, "insert");
+00194 
+00195     r = lms_db_cache_del(&_cache, ldv->db, ldv);
+00196     free(ldv);
+00197 
+00198     return r;
+00199 }
+00200 
+00201 static int
+00202 _db_insert(lms_db_video_t *ldv, const struct lms_video_info *info)
+00203 {
+00204     sqlite3_stmt *stmt;
+00205     int r, ret;
+00206 
+00207     stmt = ldv->insert;
+00208 
+00209     ret = lms_db_bind_int64(stmt, 1, info->id);
+00210     if (ret != 0)
+00211         goto done;
+00212 
+00213     ret = lms_db_bind_text(stmt, 2, info->title.str, info->title.len);
+00214     if (ret != 0)
+00215         goto done;
+00216 
+00217     ret = lms_db_bind_text(stmt, 3, info->artist.str, info->artist.len);
+00218     if (ret != 0)
+00219         goto done;
+00220 
+00221     r = sqlite3_step(stmt);
+00222     if (r != SQLITE_DONE) {
+00223         fprintf(stderr, "ERROR: could not insert video info: %s\n",
+00224                 sqlite3_errmsg(ldv->db));
+00225         ret = -4;
+00226         goto done;
+00227     }
+00228 
+00229     ret = 0;
+00230 
+00231   done:
+00232     lms_db_reset_stmt(stmt);
+00233 
+00234     return ret;
+00235 }
+00236 
+00248 int
+00249 lms_db_video_add(lms_db_video_t *ldv, struct lms_video_info *info)
+00250 {
+00251     if (!ldv)
+00252         return -1;
+00253     if (!info)
+00254         return -2;
+00255     if (info->id < 1)
+00256         return -3;
+00257 
+00258     return _db_insert(ldv, info);
+00259 }
+

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__db__video_8c.html b/www/api/lightmediascanner__db__video_8c.html new file mode 100644 index 0000000..9f3af11 --- /dev/null +++ b/www/api/lightmediascanner__db__video_8c.html @@ -0,0 +1,92 @@ + + +Light Media Scanner: src/lib/lightmediascanner_db_video.c File Reference + + + + + +
+ +
+

src/lib/lightmediascanner_db_video.c File Reference

#include <lightmediascanner_db.h>
+#include "lightmediascanner_db_private.h"
+#include <stdlib.h>
+#include <stdio.h>
+ +

+Include dependency graph for lightmediascanner_db_video.c:

+ + + +

+Go to the source code of this file. + + + + + + + + + + +

Functions

lms_db_video_tlms_db_video_new (sqlite3 *db)
int lms_db_video_start (lms_db_video_t *ldv)
int lms_db_video_free (lms_db_video_t *ldv)
int lms_db_video_add (lms_db_video_t *ldv, struct lms_video_info *info)
+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int lms_db_video_add (lms_db_video_t ldv,
struct lms_video_info info 
)
+
+
+ +

+Add video file to DB.

+This is usually called from plugin's parse() callback.

+

Parameters:
+ + + +
ldv handle returned by lms_db_video_new().
info video information to store.
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 249 of file lightmediascanner_db_video.c. +

+References lms_video_info::id. +

+

+


Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__db__video_8c__incl.map b/www/api/lightmediascanner__db__video_8c__incl.map new file mode 100644 index 0000000..ddf4717 --- /dev/null +++ b/www/api/lightmediascanner__db__video_8c__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/www/api/lightmediascanner__db__video_8c__incl.md5 b/www/api/lightmediascanner__db__video_8c__incl.md5 new file mode 100644 index 0000000..3b5959f --- /dev/null +++ b/www/api/lightmediascanner__db__video_8c__incl.md5 @@ -0,0 +1 @@ +a70efaba1e5a3952a0630f7f668a914f \ No newline at end of file diff --git a/www/api/lightmediascanner__db__video_8c__incl.png b/www/api/lightmediascanner__db__video_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..eaade596c4867abf78920accc7649d1c7264b977 GIT binary patch literal 3886 zcmZvfXHe7I*2WPP2^>I0nlu|A!~_um0V&cVozO`rp#=;HMJX!H0!lwhF9ISbv=BOf z2vrb}7C~B?fn%W?5a~hWa?hQ2-uvP14{QI{+RvWZGtY-TPrQ`{jF0Cm4+jSapYd%2 zYYvX1jfcE??C4>gNm%*!fsmD%t>N#3!}VKCEU>e)b9{XKaD3S7u{%8vi8I*R!iIw* zG>v?NgM+`%*x;7!{a37f-c*7H|1%#DMZK3(!=|321iU9|k+t2K5f2f=(jQ6xOkAj5 zvf%C$(7u$U^u_H-h|T_b^^^)K<8*y{bv7%q7rP2ZGm3skxXE7@|2KHajd}o*3AAa4 z;jIo2U|Z0noRascJ<+L8#;oobQj>IHmV zT$_-7yM=p`#zsy{|1c-{pupR%bU8F5O=_g{4S}X0n4yQzc7li%N_dcl0XcbKWL|_0 z8Ev2{)GVasuzWcI%OAt2(iA2STC?&6Ybk9lg3yH#AQqXRH8Yb26bLSR);#6ui4&6Y z%&aF+p?XOJjt$eukjT2!YMm<&oH55p=lJHM19Wz(L$Y!6^m{6uIZ;33vvHjd+09j1 zx)IeVGuB9Hrc^*h;1_S;>0*$Xo#}Ro6r*_}CmW}O(CmgiJQpHrg$6tqg8YfueUG9S z4u*kfmt3$cqx7?nQOi{Cz@)KL1^;lS^JhmxMs5EDd9JJY~?~RRqm@AhFZvP$)XQ4EDEGv~x*glKoX=X9CKuV(w7Pa>dsq zRQz^~r_nEHH?7!?OM{h=#V~l)8*K!duz7j@dDAsau{Y4$V!n5`qIlmIXslVPTPog1 z0h2Wfjk5ao6j@9>QJd)FfgXX=uXh4eDGS##yRzd6{G8dhk>%w5Brs!G|)(Ec@dp| zz{;4?_zzgz(HH&)%xZm=_9e1^X}E-82Yw*#HZg%452ChY(W5E4UM)1nSh+=eauciH;IlmRnv=2P?w2H?x*Dx> zqvV7)*iLlY_;_}PHSFLS_g_Pol*abX{&^;q``1Ygx+YhI8wDbZ+L@W>=5&D0o}H7> zW0^>%PB!clDc;U|P}5uai0V<+u)z8th+qB=-8z6$|>FIgq z029H-;G{Ej6k6Lc@6KUor_4Y}Zw+c2&+7QI>Qr)aSZ~`*>&;vKjI)VAx1(GwQSJI% z2r!uz<_w5(oHZwB=Qj{Xv{Re5=Xa>|oJHGMS_$()pK*iomGe#{AKvAje(cM+R;8-& zyX`gWkCD~bHSQ)_UvG@1-4|wb62BTDT6A>!x>@(>g3uzqqjecAe2Jh>DYmZ_WopB` z+1AVP!dJUPYk2=sLbGB&X2JSmENz#1_V}I4wCHaR0x_5x zvTkDi#@yR)l*MdF`Q6H`J8nl^mNg{nW$aS)L;LVmDsCkxAbl`*FG=x4?$I>2Qcob} zjqaY9wtBZtZ25IY5}{CyTKz6OBFd$7Ii9rw61aKrOK$DR%g&L~`J9(eOjco9WKE;= z&ok>eFY}YqOhibtg$j*jjqwwWtO8t=?4=BnJ*JF_(_A`Q8wMOB6Fu9?n>H(DmN211 zTRE(kYFdNi<_j<_6Y1dmx=A=tHk$CWO1(qct}Ab2K$vdM`1M9pS#?>V{gD(ccl7?m z`JaPg0bU&$>@a3+BioV`rq@mqiGM4W*6cdct_;i;I|(m1^h!JxY6&5*J&^d%->S6R z##9EjdI1DCg04H))r^5zFFwajdgi|HM-f4a3wo2hjFxGWQ8D<*S}v5KB9@RAs|O0b ze_N*l@cUtSVA_iwSgy_QOxg1n{7(J2<`ZJR+O3v7i z%{U?rkOix9u3h>7Y2Sr2GI2IxZJ^5rGZ1YpnktBQsY0HyMOL#8E)EcprgV^1MqK%5 zp&kuoJ2WSl6zR^vfW0QLFA7n>*dG+Z{G&3N6A3ssBZAO&|FfBkVFrL0Bhlrm%m?Ew z`PZs~AAF{G@_&Ed|CnpmZty+jlPX)B7Q>na#s2_3dQlmCc1ev1jU8iu3-CG$99e1R zLn6Xj&X_FQC}Q1_z1NlnWQWhAs|MD&DST~FDs3O0Hhqqzq&ht| z-nsC`&O=jtFEoCcvz`Vbb-6fflaP8G*7?VcyXxu46*8qXTMjN2TrHmKdd%eIym^6gUHETDbxH#Fi7 zejq&eY24BRiqo1|s(Zn*iwm*TQO9!%O4(JJ)R}jRCurtfIK~b>RCRQaui(IE*lP5r zuFo8sssq*)tTJ%)N-R>GkT8fg^DPJD6@JqG2 zOg>^oFSC9MhqvUxt|NE9VK8;2nnmGZz?Q9^9*+J`nhIVFRD5Jwl2O;&fsNIO}w2GawhtGBYyfDzk{dG z3PA7VMG;N?ptALlZ`!IEbztS{~$hN$J)fp{vZ@&;LM+oZTzA9WjKG3lh&x^J`|+mYTgov~<2ltYx8 zO95%4U1M?qq`Zrr6RW1Ux|ZtWuBRx#L|Kr$STJOHDK^p@S3l|y>NlDK_HEy)q>q=w zF=rT*1bG;_PeS1M9%+k1f6ZFw&dpteK^R*ukk476{&>5~*RJnvL8jh-(MWN5*1Jr) z7u0!O4CKn>_ZM$9_ZulpOuDzFAN*-O9rO;7mX-q8B27&TB_w@+Sxzn8gERz2GbnTCc)w1IqgjA^}0aMCHPY5uWHse;YZe$AP@8Q!K9C}7t15srP1g%9@tloYyE zR~s!{-(Fo9#CqDs;kKN-1VkmY>XYH}z@^Az%V++0S~aX{G)o=(^f%SjobdNGhG>SD z>AI@nYaaO3Y+TY{omTX2K(pB;y5!Ar&wf*786Wn5y#D;HlT%U(Xv3z1MzI>Q;u5CH z#2xTbE7*pYUi$U)@?XK&*!p*@e34;$I;qmGakl3?`SOw)ayx4bTRwf4_o+i36M;Rh zgnZ%i{JHVUcwr40T%mw|A~^iKl|S=0#oH`ATKKJS@qo#Y+&eRB;VW7y?_7JI?lY^2kM1mde&X)OmtWJ? zzih5fnU|c}@jMQA`M5MN3@5zBg{GoBTUmFS{!#``8G_=fu6)E>);w;k;zw50Lkj|G z*Ji16F^x@ZYpeWwz@i~&8D>U%21#B-Xp6l{>$Oj%LqrYrPDZv@s};79=FBx)&7p%w zQl=F1Lo%qT*(>y{ZmIMjPilF;54is60`GmL(FXiYRG!O($DY@#&T2x9kaIHR@nQkr zP2=vM^0ssAnmFl1IefeB;nQ1qD7u+<&6}pOJzY;m_Fo7Tx&?<-45?CrAKX+o%Alch zp@$ZR08S-Chqe~tQWg(=YeePww;Y;jPL&;r@dA`EJ*pp-4oLS==S%gB1zGy@6wTbS zL=7ut0O!FGnT@E$w?x0yIQ;&wE%?b7kUW2P6>o-Y)tC2W5M&9`nn=6Gyo(vhT+Fl< zz>?`Fn}{zT@Q)si!b|QzcyjO7_X}D7=q4iSQfMoOSNW&&Qx^#VGtUq;IPP>=9A)R994 z>-ULAXoy=ZypV?Wa>((fiAPxG>n&K(SEq}0Ay4Vb41K=-DL%{yRzT$(Qmt$szHomk z?*AqGkjR`Nif%ab2~oJ7nfO1#BcYc1Q~9FO*+dA~=s&@7Qs>|V0d89&sp?sOm~T0Z M4J{0+^iWU!1-y66Jpcdz literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__plugin_8h-source.html b/www/api/lightmediascanner__plugin_8h-source.html new file mode 100644 index 0000000..8b5ec3e --- /dev/null +++ b/www/api/lightmediascanner__plugin_8h-source.html @@ -0,0 +1,75 @@ + + +Light Media Scanner: src/lib/lightmediascanner_plugin.h Source File + + + + + +
+ +
+

src/lib/lightmediascanner_plugin.h

Go to the documentation of this file.
00001 
+00121 #ifndef _LIGHTMEDIASCANNER_PLUGIN_H_
+00122 #define _LIGHTMEDIASCANNER_PLUGIN_H_ 1
+00123 
+00124 #include <lightmediascanner.h>
+00125 #include <lightmediascanner_charset_conv.h>
+00126 #include <sqlite3.h>
+00127 #include <sys/types.h>
+00128 
+00129 #ifdef __cplusplus
+00130 extern "C" {
+00131 #endif
+00132 
+00133     struct lms_file_info {
+00134         const char *path; 
+00135         int path_len; 
+00136         int base; 
+00137         int64_t id; 
+00138         time_t mtime; 
+00139         time_t dtime; 
+00140         size_t size; 
+00141     };
+00142 
+00143     struct lms_context {
+00144         sqlite3 *db; 
+00145         lms_charset_conv_t *cs_conv; 
+00146     };
+00147 
+00148     typedef void *(*lms_plugin_match_fn_t)(lms_plugin_t *p, const char *path, int len, int base);
+00149     typedef int (*lms_plugin_parse_fn_t)(lms_plugin_t *p, struct lms_context *ctxt, const struct lms_file_info *finfo, void *match);
+00150     typedef int (*lms_plugin_close_fn_t)(lms_plugin_t *p);
+00151     typedef int (*lms_plugin_setup_fn_t)(lms_plugin_t *p, struct lms_context *ctxt);
+00152     typedef int (*lms_plugin_start_fn_t)(lms_plugin_t *p, struct lms_context *ctxt);
+00153     typedef int (*lms_plugin_finish_fn_t)(lms_plugin_t *p, struct lms_context *ctxt);
+00154 
+00155     struct lms_plugin {
+00156         const char *name; 
+00157         lms_plugin_match_fn_t match; 
+00158         lms_plugin_parse_fn_t parse; 
+00159         lms_plugin_close_fn_t close; 
+00160         lms_plugin_setup_fn_t setup; 
+00161         lms_plugin_start_fn_t start; 
+00162         lms_plugin_finish_fn_t finish; 
+00163     };
+00164 
+00165 #ifdef __cplusplus
+00166 }
+00167 #endif
+00168 #endif /* _LIGHTMEDIASCANNER_PLUGIN_H_ */
+

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__plugin_8h.html b/www/api/lightmediascanner__plugin_8h.html new file mode 100644 index 0000000..49b4848 --- /dev/null +++ b/www/api/lightmediascanner__plugin_8h.html @@ -0,0 +1,189 @@ + + +Light Media Scanner: src/lib/lightmediascanner_plugin.h File Reference + + + + + +
+ +
+

src/lib/lightmediascanner_plugin.h File Reference

#include <lightmediascanner.h>
+#include <lightmediascanner_charset_conv.h>
+#include <sqlite3.h>
+#include <sys/types.h>
+ +

+Include dependency graph for lightmediascanner_plugin.h:

+ + + +

+This graph shows which files directly or indirectly include this file:

+ + + +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  lms_file_info
struct  lms_context
struct  lms_plugin

Defines

#define _LIGHTMEDIASCANNER_PLUGIN_H_   1

Typedefs

typedef void *(*) lms_plugin_match_fn_t (lms_plugin_t *p, const char *path, int len, int base)
typedef int(*) lms_plugin_parse_fn_t (lms_plugin_t *p, struct lms_context *ctxt, const struct lms_file_info *finfo, void *match)
typedef int(*) lms_plugin_close_fn_t (lms_plugin_t *p)
typedef int(*) lms_plugin_setup_fn_t (lms_plugin_t *p, struct lms_context *ctxt)
typedef int(*) lms_plugin_start_fn_t (lms_plugin_t *p, struct lms_context *ctxt)
typedef int(*) lms_plugin_finish_fn_t (lms_plugin_t *p, struct lms_context *ctxt)
+


Define Documentation

+ +
+
+ + + + +
#define _LIGHTMEDIASCANNER_PLUGIN_H_   1
+
+
+ +

+ +

+Definition at line 122 of file lightmediascanner_plugin.h. +

+

+


Typedef Documentation

+ +
+
+ + + + +
typedef int(*) lms_plugin_close_fn_t(lms_plugin_t *p)
+
+
+ +

+ +

+Definition at line 150 of file lightmediascanner_plugin.h. +

+

+ +

+
+ + + + +
typedef int(*) lms_plugin_finish_fn_t(lms_plugin_t *p, struct lms_context *ctxt)
+
+
+ +

+ +

+Definition at line 153 of file lightmediascanner_plugin.h. +

+

+ +

+
+ + + + +
typedef void*(*) lms_plugin_match_fn_t(lms_plugin_t *p, const char *path, int len, int base)
+
+
+ +

+ +

+Definition at line 148 of file lightmediascanner_plugin.h. +

+

+ +

+
+ + + + +
typedef int(*) lms_plugin_parse_fn_t(lms_plugin_t *p, struct lms_context *ctxt, const struct lms_file_info *finfo, void *match)
+
+
+ +

+ +

+Definition at line 149 of file lightmediascanner_plugin.h. +

+

+ +

+
+ + + + +
typedef int(*) lms_plugin_setup_fn_t(lms_plugin_t *p, struct lms_context *ctxt)
+
+
+ +

+ +

+Definition at line 151 of file lightmediascanner_plugin.h. +

+

+ +

+
+ + + + +
typedef int(*) lms_plugin_start_fn_t(lms_plugin_t *p, struct lms_context *ctxt)
+
+
+ +

+ +

+Definition at line 152 of file lightmediascanner_plugin.h. +

+

+


Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__plugin_8h__dep__incl.map b/www/api/lightmediascanner__plugin_8h__dep__incl.map new file mode 100644 index 0000000..503e827 --- /dev/null +++ b/www/api/lightmediascanner__plugin_8h__dep__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/www/api/lightmediascanner__plugin_8h__dep__incl.md5 b/www/api/lightmediascanner__plugin_8h__dep__incl.md5 new file mode 100644 index 0000000..d75c63a --- /dev/null +++ b/www/api/lightmediascanner__plugin_8h__dep__incl.md5 @@ -0,0 +1 @@ +028a480f4edc1e7a571f0025d6804f4b \ No newline at end of file diff --git a/www/api/lightmediascanner__plugin_8h__dep__incl.png b/www/api/lightmediascanner__plugin_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..060df652a52dedae84375098dfffde096d95bbee GIT binary patch literal 6149 zcmb7obyUXN`p8vaO=Nue``YDLa{X zAs2UkIXiNUBwXRWcI#SNe|M-3f<|%Z{${t-g zs_T(|dhV}o7xiLhsS3=(c8ky_JTbl`TQrJ#lR@LoNK%gX98We4sS;LZ)c<1D1*aiQ zpntzx_F1zp#AU~&^h+S(Z`$Uj!O`Prkt590mi-=wN9VgaFn*zuC)^>oV8%&dR?mh% z3ADbx1$hyWI>*}9UTy8_toFkjXF&7*u~*B`8n1Ljpc!QMbd3h6b4EPZWk$SBtdMYI zC1l0+r7N&Kt)^Dt_C$E5a{N8PT-h?<3D>KY-I& zna?n^~Ge+>h*&8qE z9$g6I7j73vXzgE>1o%#C@jzgP+PQ;N&QJub79Wj>)+nOmr^7i9ZBIK)1!{50Mh0!n z!3M0fu$-{{ep9X@#7ee$w6)A+&@N}ru!Qf=smHZdRpTN3Jc8bpLQI%JYfFs z8rM`&(gIrQ6xeOa3>B_R0T+g|KkMNd$*PxahBn=1^D(J-34unVpa|6hM3qt@1rh{k(hXudi z2Cuv|_(3~&y9-XZDp1i=)L(IMh?de&$R$Zw+*c+frP2w@UbS|jTiF;gCrfNe{>{bX z_wk=;R?f;tZN2v*zRI%|`1Y}o5B2l>pSNOGt6l~Eoke^Gr(aL{el{$~N{G)_>U8}e zAqiNt`3DUD7?1=Q3G8$ICSFPFq|%m;I#x9{B_9F`gMet;r@j&eZzS z9dGeEVu&l+`Eh2MN_rFp;qk=5e!|WBXaxw_Eq3zu2PD>NJ`vw)50D8Z2CXtE9w2=F zgaYHal@-WA|@~P ziilMZBfMjOTTJ$NX4tbHj9Fr8{`=@lw)nfUoi*c#fSK73RBa@!FJ5(8Jpg0(^m`_G zXC@XMa#ALRr9XGGKrQhIrrF*W&b%u_`uZ-{+Th2XwHtdINQ253u(-vQ0;cBeFcKY(Cs9 zrUKtRS`<27(Z~1uLwmn{>-nclKdln~;e%9;K}vs)(l4q-wr{;zo=SwHzw1fEZ-?9p z)nCKoFeknYZDKjBGG)im$IWQqCVcUi&9eM}LrAfK95YmJ?O&E#IG>8F{%3p9q2?x*Mj`!RdmBPZ4goVwbqmCz^0hbRsVRllA!& z916VJ069qU!gou|1D3~GgWhUE$wNxeLM^OH&!iYlWRoR*GJJ{+>-CF5WsUD-==+=) zBsv(z$PLAt<{@zGT+&q{gp)q%!T?6FtdgU-K0tKjIvCbPkZlKMnXolt@jQ9&@n}8x zLekgY%K8^xsn^99%yH(D8Ipnjq|}0j2+}9iaC-N{PJW9YN|lhFe@tqs)6VXZkhk z?$(Nbb%gD4Kx335psN8+3%B2rGlh{3I;V0AI(s+>Ew>^4!|~-G1K?_^bJB3eP`6x30!NL-J~^K(gxmFo zq$;5PpV&t1y!VI7KA4x{M0v)c@x~|Qf5E|=%ie=rKv|{e!?xLrH>pfbk&}n8cl(Ze zF;(NJ_7Ou@;(NJ!9Y)ORU7zQUHCU<1?5tZGzf|vPpeYyM=b*khOE0}B6u8}`h7=Pu zdi_g7ZX(`E81e5ux9Z@gwD^qc4l!DjZ%{N(Vf0R@O!8CWANoqYSv5ChxZpqX$HSY+ zp_Z^B9Ri9^b$`R`(Fbi1lsA60O*gruKp-<-|I(5mAvx}gMV$FPa>W}5ha6fud!t!Y z2Kbfgb^w=6%8$fl+3=Sd?^fVin&c`*Hl-}-s3^lycwoLqhO{2H(s7tSlgsE|F8-tL zUkAkac#r&h%FK-v(GGm;cU|foLu9}CY!0KElM-Jgbh_@>^Vkii{|+3beY!yMtn<9T ztuNus6=hkt^qke(H*frzcAw=>l*M=H`2~Ke2mATzHZZ2tM1dyEdOAfgZkb_wzv{+Z;R>_4^~rM&gasU>G`8SxITSr zIZQmK?q$Q0-m)LJx=3c2tHD3h@XJp8kvN@VH56U``LavE+V-o{UWNmP>+b9WVVkbH zl~451%=HRr$Mf$=i|tcYG(Feemg+b5(Gk`+*IZ{GY>ST=71t?JFs4#n;e1%OwE6IA z3z38vo6~ophgWoy0uI z9=VO}u&@WL_hX0Tj6d?G27zD6K?rICawR5_D8eJ~c1XGF`fc>IuG$9W&JA=1*I@8D zFN}ZAJha#1@_`^w{V>A4qy&W6(>b5s+Hty{+Si`C`bJO;xB&Un?Mke2>egSl)*lo) znhqckG#aes>@?5Bgozh3%6rthtE^E;N5C!`=Q{FBk=3_yukXJVzz(|9+>^bE)tunhYSu z=m;e^<-FW5TRD9}WOoPACmM=~>p$IdX=8Nu!QGIZWTCyUMnhTId|i5UTV}s}YZ$eA zNu1KNF6Pd@B&R18Ug2Ggt|z~D9>O;G;qW?`zyJ0DcWr4|QJZ_@$WwWiC$}GoKVzL0 zBfqlYZcwkSvsnh1i9ZJ)^HNE9J!v&+PdVrzpLo~?C@8KYj5H4UU{2Jr-9)vtC7CkW+4cOc zvy9UjX2JQWNEG?$%_5f*P!FljnEk7?HkBsw^90p-@0fAN`e2!_a`f#%Z*R^?7om0T z_$Z;PC=eMZ=pePond&9 z={tcy$~6P-)LZ2mhP~DW1=O<`MM9DYVKBeSJa8}V$UFO|hOWVY8+Ck^=<2-!YgPWr4BoXjk-3)2rBR9_IHm)j#6gj51Ta!jZ3Y`?4 z*Hi-z{i~(li(YT-jO!7WypdXRv^XD+D2t8%8{4FCQ$y2?`A6Tb%N(`BV>c|Co7PUZYn5d6Zz_AX?Hap01ve1k6dzvNppz5MsamGj%>(1lBqM;~{(_zdJ=Z

RxT#ir zXaxrhks82|qr>9j<)To5SqL^Uo(BA}_GkBMIY!Xnm*tO@xr$yUM~?6Jp8o0b-+=I+ z$KvDGf6NJGzUy&X9YF_!)0gfxJ%E7c|kTq^R+Atvh#hsc~X zW_oFpV|!!?FRjF%{(CdWh)p9e*g{^|e zdf&}&&|*ezm_xK~Jvk|l zMMsId3u}?EGMH4l!hxa#*AG9t#@|a0!A`0udeFgf?_8~*UMar1XOn7*hRGMcIYHT8 zUa;i8k7Ygu6iMZFkaAo($WqC01h4W*P>uBKG68{!P}pun&sWc)NZ1j)!zW=s7PD#I zlxSfD-emCmNG}4$E#y@QQh%p`d<+UyU6rC0o$?TmSKcF|lEUMLtC^mGaHcB`e#Nvw zGh;}R^8yFG{a6W=K(rf24LcjITl%64FnPWr#mOO*v7KSwp zv0;$KwYYpH=w+(lY=An|?v{7jD=%*=e7}%IciF4j)W*F>Xc>6XBl9^A=0Z`gOniTk zMkJ?aA~yZFyvc+HoF3oi=(4WuAm+7??-%g59oam2+okxx+ZhNG{B)f|^_$0#aap)l zNxI(>%(DzS9sD()9m+#>3~w}w0UmZ=k^c>t{h7(r&`-cO=Fhz06>9^cK_{T+8YN zEi1yJrSxk$ug`DcR-RyHGY~L?;X33Yo79vm`l#dIL@}zeR8zbxFSyw}aO~&zQYBkvMI{0h!oAu?Y9&f#y}9GC%0p4UFshTSD?L?pk9|A=ctNLSd%|8zAHOp%_a+Cstit^2W#kjq47WCqp6@POew60hW15KivQfOeVu{?@PZO2 zTJBmy)VT>UaGe(mn?e6!#-)Hx~E@B58f_3vZAM{06q zd|aQW$X@@_sk3`_2M6Jge4#Znfr)JXHRuxHbv??^zh&+5#K&~OZ5W=Rf|aGxzg#|z z+=KCBVf}9BBHQq)SAd|6jFO*m`IS2(sg;$U=J2z;^?^rCBwke9?7lA1g`M~WFDhpC zb;!UBY7+{xz>rk@%(*@-;YHUM7I^F2Prb9Rk^)Ci9Id43WUbYVUx(a|rIl>%FRu`c zk)KSt?2@BiA9z+sAkRO^X&&y@`m|Zn6Z@MUy8c=XUPp*az(SXrj!1zqH5lvY(Z`d-froNjw`3%6diF5dG_1O07aZU93z zkN_N5_$*W>UJ`lW{M!6fVEHUA%^fW?N$@fT{V?O}cXcYPUwDD_Dh~cIL+5&l&N6ID zD64>0Ro)>8sP_y#U~#J-oGAjs7Fp-K-Q5pCOQ1&lrs?vgNw3 zJ*>_V@B3w#jk)5gXy<-B9RDj=v<6@HK{?A_L|Jg7Z03Vfmc8_XLl;Y-Th^wq-RB2I z9N{X6CuFd!@wc%|pC=`r8axc7do69^6b^ySm|T+=*M&+vg;@z>GG-`*@js)~6WwAu zZAG(7#*?<;_;T8*uUZA)JYIXEB((7tFL-I;DX=V&m0;M4F)o8SBmYZT zOCh=q0$lCT_&r>IqF_4)yBdp0zR*x1{N^E1@J-32z`u6PduOzYZiWEA9^C>PLcdJ! zfFLM>i8{Z?tSot*(a?0D6QeY3%oHNn$waPUY#1NB*|TYozKUJaHnT-@tsT`ZVKXx2 z{cwI+>f|ZGjDqe@;AQt@d6WMqk^knHvf=cDv1{Z1rW$k35M(fRR(x#q=7P2d8S0v1 J8? + diff --git a/www/api/lightmediascanner__plugin_8h__incl.md5 b/www/api/lightmediascanner__plugin_8h__incl.md5 new file mode 100644 index 0000000..dbdd8a3 --- /dev/null +++ b/www/api/lightmediascanner__plugin_8h__incl.md5 @@ -0,0 +1 @@ +d7a79bb71161929390f7080b91f24c07 \ No newline at end of file diff --git a/www/api/lightmediascanner__plugin_8h__incl.png b/www/api/lightmediascanner__plugin_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..3d182bb19421db97b4f482513471b1798a391912 GIT binary patch literal 1851 zcmV-B2gLY^P)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00z@ZL_t(|ob8|m9|a+7cB$1XbTi@(K3*Wwm<T{Tb1XV^%;K|~-Snjmov*Ue%(e_-P zZEOxK=W+rP%;^Md`(oYW(JnSbS}-wsxpK7n3qemlA}zQn(t!lqkc+lJ0UT+E+wZApwd9p?G}_zkBr_uh_P2b&d}%AdvZSpB%aC@s ziCVDiXa~(XIom(`m9`NhwPqWnsA_P;KC>j zXq&MzpsjYd*%E5np`Bp`Ic-BP)`JZCSzOLcQv+4+P5{fL)s5baeuU* zn&RGQKi^|JqmA5SyP}PDo_eB<{U<> zue2DoUX6CoLwj~uz3_>E7VX-IcGqZ3c38c5{R+@Sd@rv>yL0F%JFMQj&U&)Z)TOxV zD$yo;F*e%SVfF6<{larq?m#=nPX`khl^s@}CKYIRjTH|jR`sa;-_L@=KZs#(TSoeM;i{MvY?#< z+Bu+AFPaI$mv#X#4Djl5+q8+IHawY-RxJ*@cb1;QPBt044Uv(pTpb( zOPNg$E}u*(%K;cj8ig5I0$P(0(9Vzf0Th~Ja-RI0Q@R%GuSVG%*xltOSBfocvZc(y z03y(~wytN}$#U8MhA+%{w2KXq7EFv@t{koYLZ*o+?WAI~;HF3mzC0nVJrsBd78cUN zuqOjr_W>aZthwe4lk&Y4X#>nPnV#ycrbF5lnt;|A&L-fd;H_TH+IB`0Ln}4gcFVR> zmR7e?53J$V_3vh??T!QEl%5I6a^4&EMk9KT*&&i<86Sn>2 zi}s@3B^#q~9n;Qkn(HLAAm0GTOHZdQGB&+uW@NXCWlZ5GnYNJZob}qZV~LC@G^hP$ z^-JpJN;0NEK>O{=rVnPu&hLvPs@$=2XwK}}m~o$bwUr7#lRM5&J$xoJShq=>&YqBt+}qCgn98RlklosY__FUHXfUvwqRo=O`@J@^+7JQ}Ye$D`N`$Xfw=PaIT=CP;M?IuKlHIOS?U0 zUxi{{I67XMJ^!e9sdlfVX|CvYCZ#Yh;XbSc=B3?Zx3zg`_fKx!T9NOK-ISM_wkZ`EErKH zw{GaJ_2S#!9ELXBDI5L;+h>DqW7a(kE%IR`wnwWJ*5aOMEh|Kt2euX1NcTkRHZ=!6 z09AKeeZjqZqQ#{@xUah~Id4OErFx + +Light Media Scanner: src/lib/lightmediascanner_private.h Source File + + + + +

+
+ +
+

src/lib/lightmediascanner_private.h

Go to the documentation of this file.
00001 
+00021 #ifndef _LIGHTMEDIASCANNER_PRIVATE_H_
+00022 #define _LIGHTMEDIASCANNER_PRIVATE_H_ 1
+00023 
+00024 #ifdef __GNUC__
+00025 # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+00026 #  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))
+00027 # else
+00028 #  define GNUC_NON_NULL(...)
+00029 # endif
+00030 #else
+00031 #  define GNUC_NON_NULL(...)
+00032 #endif
+00033 
+00034 #include "lightmediascanner.h"
+00035 #include "lightmediascanner_plugin.h"
+00036 #include "lightmediascanner_charset_conv.h"
+00037 #include <sys/types.h>
+00038 #include <poll.h>
+00039 #include <limits.h>
+00040 #include <sqlite3.h>
+00041 
+00042 #define PATH_SIZE PATH_MAX
+00043 
+00044 struct fds {
+00045     int r;
+00046     int w;
+00047 };
+00048 
+00049 /* info to be carried along lms_process() and lms_check() */
+00050 struct pinfo {
+00051     struct fds master;
+00052     struct fds slave;
+00053     struct pollfd poll;
+00054     lms_t *lms;
+00055     pid_t child;
+00056 };
+00057 
+00058 struct parser {
+00059     lms_plugin_t *plugin;
+00060     void *dl_handle;
+00061     char *so_path;
+00062 };
+00063 
+00064 struct lms {
+00065     struct parser *parsers;
+00066     int n_parsers;
+00067     lms_charset_conv_t *cs_conv;
+00068     char *db_path;
+00069     int slave_timeout;
+00070     unsigned int commit_interval;
+00071     unsigned int is_processing:1;
+00072 };
+00073 
+00074 int lms_parser_del_int(lms_t *lms, int i) GNUC_NON_NULL(1);
+00075 int lms_create_pipes(struct pinfo *pinfo) GNUC_NON_NULL(1);
+00076 int lms_close_pipes(struct pinfo *pinfo) GNUC_NON_NULL(1);
+00077 int lms_create_slave(struct pinfo *pinfo, int (*work)(lms_t *lms, struct fds *fds)) GNUC_NON_NULL(1, 2);
+00078 int lms_restart_slave(struct pinfo *pinfo, int (*work)(lms_t *lms, struct fds *fds)) GNUC_NON_NULL(1, 2);
+00079 int lms_finish_slave(struct pinfo *pinfo, int (*finish)(const struct fds *fds)) GNUC_NON_NULL(1, 2);
+00080 
+00081 int lms_parsers_setup(lms_t *lms, sqlite3 *db) GNUC_NON_NULL(1, 2);
+00082 int lms_parsers_start(lms_t *lms, sqlite3 *db) GNUC_NON_NULL(1, 2);
+00083 int lms_parsers_finish(lms_t *lms, sqlite3 *db) GNUC_NON_NULL(1, 2);
+00084 int lms_parsers_check_using(lms_t *lms, void **parser_match, struct lms_file_info *finfo) GNUC_NON_NULL(1, 2, 3);
+00085 int lms_parsers_run(lms_t *lms, sqlite3 *db, void **parser_match, struct lms_file_info *finfo) GNUC_NON_NULL(1, 2, 3, 4);
+00086 
+00087 
+00088 #endif /* _LIGHTMEDIASCANNER_PRIVATE_H_ */
+

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__private_8h.html b/www/api/lightmediascanner__private_8h.html new file mode 100644 index 0000000..b2638ad --- /dev/null +++ b/www/api/lightmediascanner__private_8h.html @@ -0,0 +1,494 @@ + + +Light Media Scanner: src/lib/lightmediascanner_private.h File Reference + + + + + +
+ +
+

src/lib/lightmediascanner_private.h File Reference

#include "lightmediascanner.h"
+#include "lightmediascanner_plugin.h"
+#include "lightmediascanner_charset_conv.h"
+#include <sys/types.h>
+#include <poll.h>
+#include <limits.h>
+#include <sqlite3.h>
+ +

+Include dependency graph for lightmediascanner_private.h:

+ + + +

+This graph shows which files directly or indirectly include this file:

+ + + +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  fds
struct  pinfo
struct  parser
struct  lms

Defines

#define _LIGHTMEDIASCANNER_PRIVATE_H_   1
#define GNUC_NON_NULL(...)
#define PATH_SIZE   PATH_MAX

Functions

int lms_parser_del_int (lms_t *lms, int i) GNUC_NON_NULL(1)
int lms_create_pipes (struct pinfo *pinfo) GNUC_NON_NULL(1)
int lms_close_pipes (struct pinfo *pinfo) GNUC_NON_NULL(1)
int lms_create_slave (struct pinfo *pinfo, int(*work)(lms_t *lms, struct fds *fds)) GNUC_NON_NULL(1
int int lms_restart_slave (struct pinfo *pinfo, int(*work)(lms_t *lms, struct fds *fds)) GNUC_NON_NULL(1
int int int lms_finish_slave (struct pinfo *pinfo, int(*finish)(const struct fds *fds)) GNUC_NON_NULL(1
int int int int lms_parsers_setup (lms_t *lms, sqlite3 *db) GNUC_NON_NULL(1
int int int int int lms_parsers_start (lms_t *lms, sqlite3 *db) GNUC_NON_NULL(1
int int int int int int lms_parsers_finish (lms_t *lms, sqlite3 *db) GNUC_NON_NULL(1
int int int int int int int lms_parsers_check_using (lms_t *lms, void **parser_match, struct lms_file_info *finfo) GNUC_NON_NULL(1
int int int int int int int
+int 
lms_parsers_run (lms_t *lms, sqlite3 *db, void **parser_match, struct lms_file_info *finfo) GNUC_NON_NULL(1
+


Define Documentation

+ +
+
+ + + + +
#define _LIGHTMEDIASCANNER_PRIVATE_H_   1
+
+
+ +

+Copyright (C) 2007 by INdT

+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.

+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.

+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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

+

Author:
Gustavo Sverzut Barbieri <gustavo.barbieri@openbossa.org>
+ +

+Definition at line 22 of file lightmediascanner_private.h. +

+

+ +

+
+ + + + + + + + + +
#define GNUC_NON_NULL ( ...   ) 
+
+
+ +

+ +

+Definition at line 31 of file lightmediascanner_private.h. +

+

+ +

+
+ + + + +
#define PATH_SIZE   PATH_MAX
+
+
+ +

+ +

+Definition at line 42 of file lightmediascanner_private.h. +

+Referenced by lms_check(), and lms_process(). +

+

+


Function Documentation

+ +
+
+ + + + + + + + + +
int lms_close_pipes (struct pinfo pinfo  ) 
+
+
+ +

+ +

+Definition at line 566 of file lightmediascanner_process.c. +

+References pinfo::master, and pinfo::slave. +

+Referenced by lms_check(), and lms_process(). +

+

+ +

+
+ + + + + + + + + +
int lms_create_pipes (struct pinfo pinfo  ) 
+
+
+ +

+ +

+Definition at line 577 of file lightmediascanner_process.c. +

+References pinfo::master, pinfo::poll, fds::r, pinfo::slave, and fds::w. +

+Referenced by lms_check(), and lms_process(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_create_slave (struct pinfo pinfo,
int(*)(lms_t *lms, struct fds *fds work 
)
+
+
+ +

+ +

+Referenced by lms_process(), and lms_restart_slave(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int int int lms_finish_slave (struct pinfo pinfo,
int(*)(const struct fds *fds finish 
)
+
+
+ +

+ +

+Referenced by lms_process(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_parser_del_int (lms_t lms,
int  i 
)
+
+
+ +

+ +

+Definition at line 249 of file lightmediascanner.c. +

+References lms::n_parsers, and lms::parsers. +

+Referenced by lms_parser_del(), lms_parsers_setup(), and lms_parsers_start(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int int int int int int int lms_parsers_check_using (lms_t lms,
void **  parser_match,
struct lms_file_info finfo 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int int int int int int lms_parsers_finish (lms_t lms,
sqlite3 *  db 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int int int int int int int int lms_parsers_run (lms_t lms,
sqlite3 *  db,
void **  parser_match,
struct lms_file_info finfo 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int int int int lms_parsers_setup (lms_t lms,
sqlite3 *  db 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int int int int int lms_parsers_start (lms_t lms,
sqlite3 *  db 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int int lms_restart_slave (struct pinfo pinfo,
int(*)(lms_t *lms, struct fds *fds work 
)
+
+
+ +

+ +

+

+


Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__private_8h__dep__incl.map b/www/api/lightmediascanner__private_8h__dep__incl.map new file mode 100644 index 0000000..177ed30 --- /dev/null +++ b/www/api/lightmediascanner__private_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/www/api/lightmediascanner__private_8h__dep__incl.md5 b/www/api/lightmediascanner__private_8h__dep__incl.md5 new file mode 100644 index 0000000..ec2b264 --- /dev/null +++ b/www/api/lightmediascanner__private_8h__dep__incl.md5 @@ -0,0 +1 @@ +4d417d15d050e1821629b1854b390812 \ No newline at end of file diff --git a/www/api/lightmediascanner__private_8h__dep__incl.png b/www/api/lightmediascanner__private_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..3bc92abe554de707374cf5d67a532927fe10e3d8 GIT binary patch literal 1465 zcmV;q1xEUbP)v0{{R3gcnp30000LP)t-s{{R2~ z|Na>naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00mJ=L_t(|ob8+ova28r zhVK^W3=23e;W{pa)5-p~awQ26Z0oUC9_f*Prqx&tekJ$}{4rP4pWZvrT!Z-cYY=xA zlviGWI$~Gcqs`4h++D7?$3a}YfRl2?Jr3gH1)P*C?r{(oFW{tHagU!z3wja*u@_60SKBDdO ztC#wW^KnTH;^GCIlq>FW5En1tq+D^2gSdDBCq*w#zNhQFg;{l*rmuS5^$}OaHR_0` zX{ud>CgNLtT%(A%ZsQeFLfi`1=pb&;c!l~CH^nvmiCgpbCT`E$m$(OSN8+}JE1^Eb z-Ed78;-0vsJ#m{W$vrhCZgwTPr`p7~G^+vER42ZL81CG7h3XP>tL@)-g{l&-q|=v* z#w%2nc=A$(Yw8lK1g=Ru=_R%WpA9E{6R~{o>|X9hon6?;5fB0$6b&syCKjW%2BAXAA3piB|Ly zoF&(5RP)_b%=wNJ%hj2s|A(mFSe#jIQ!cTgwCmV4V3S!LUE>C+j_-jje3&@1Br!x{ ztaXZbh{X7(%#j$|u@%JdNX#8wLKl}roLQ0>A~DuFMSScwL4QhU8%PX^c;+hFA@(85 z#7H$Waa<%LB{<874c;}!ehgb;PMY2$#?){kPI>m6U>`S^Y4aOm(T?Lz^4_Id71m6| zGIE(1w&BcwN@&M{7z`529RE#J$BC>}VR3(ntcy$RDDrHQTyLV9c8e!IWHEB3#dSP$ zRnw6R_*fQ>T(JQIh6e{Xd%;?ofO;>vkocdXI_CBxICpW$EUsh2Rn1)kLdT}i?{3qdxJ!Ce!R*|=as|PTyX5%n->$FH{tg?#0#Bl-quTEu~WzQ{co$t(J5mSAS!EtsH?HSMhc7Km_Vl za(z;Elj)Ue`=EvyY)Y6L=VdBjZk~JFoq1#%x6#Ei%1IaNH9+cfG1j;DPme3m-aWk9 zUx9WfHrMO7h-%2Jgt#HI8scWmiijIAt0KPK$O)v2jgEo3zz8UhPpgZLawDaMxMfL$ zxQhmH)shBr7Y*X7B@N;(dX`;%ZnXWKlGGBP8*P85B%Q>kN88^iNfB|q(e`b0Z7t{_ zt~uI%v{rOI#GGbcWwia6e6EYw)EjMICvmmW_Du)@ZN#-k+vngW*Q$ + + diff --git a/www/api/lightmediascanner__private_8h__incl.md5 b/www/api/lightmediascanner__private_8h__incl.md5 new file mode 100644 index 0000000..27e1e3a --- /dev/null +++ b/www/api/lightmediascanner__private_8h__incl.md5 @@ -0,0 +1 @@ +964dddbac26f6db485044d09051fa27b \ No newline at end of file diff --git a/www/api/lightmediascanner__private_8h__incl.png b/www/api/lightmediascanner__private_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..52d4d23509eb647508bcec33a6ef79d6c691215d GIT binary patch literal 4658 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 V6Jdq8OOJ<4SJOzNO3gO>e*pFmBFF#$ literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__process_8c-source.html b/www/api/lightmediascanner__process_8c-source.html new file mode 100644 index 0000000..b39919e --- /dev/null +++ b/www/api/lightmediascanner__process_8c-source.html @@ -0,0 +1,886 @@ + + +Light Media Scanner: src/lib/lightmediascanner_process.c Source File + + + + + +
+ +
+

src/lib/lightmediascanner_process.c

Go to the documentation of this file.
00001 
+00021 #ifdef HAVE_CONFIG_H
+00022 #include "config.h"
+00023 #endif
+00024 
+00025 #define _GNU_SOURCE
+00026 #include <sys/wait.h>
+00027 #include <sys/stat.h>
+00028 #include <unistd.h>
+00029 #include <dirent.h>
+00030 #include <signal.h>
+00031 
+00032 #include <stdio.h>
+00033 #include <stdlib.h>
+00034 #include <string.h>
+00035 
+00036 #include "lightmediascanner.h"
+00037 #include "lightmediascanner_private.h"
+00038 #include "lightmediascanner_db_private.h"
+00039 
+00040 struct db {
+00041     sqlite3 *handle;
+00042     sqlite3_stmt *transaction_begin;
+00043     sqlite3_stmt *transaction_commit;
+00044     sqlite3_stmt *get_file_info;
+00045     sqlite3_stmt *insert_file_info;
+00046     sqlite3_stmt *update_file_info;
+00047     sqlite3_stmt *delete_file_info;
+00048     sqlite3_stmt *set_file_dtime;
+00049 };
+00050 
+00051 /***********************************************************************
+00052  * Master-Slave communication.
+00053  ***********************************************************************/
+00054 
+00055 static int
+00056 _master_send_path(const struct fds *master, int plen, int dlen, const char *p)
+00057 {
+00058     int lengths[2];
+00059 
+00060     lengths[0] = plen;
+00061     lengths[1] = dlen;
+00062 
+00063     if (write(master->w, lengths, sizeof(lengths)) < 0) {
+00064         perror("write");
+00065         return -1;
+00066     }
+00067 
+00068     if (write(master->w, p, plen) < 0) {
+00069         perror("write");
+00070         return -1;
+00071     }
+00072 
+00073     return 0;
+00074 }
+00075 
+00076 static int
+00077 _master_send_finish(const struct fds *master)
+00078 {
+00079     const int lengths[2] = {-1, -1};
+00080 
+00081     if (write(master->w, lengths, sizeof(lengths)) < 0) {
+00082         perror("write");
+00083         return -1;
+00084     }
+00085     return 0;
+00086 }
+00087 
+00088 static int
+00089 _master_recv_reply(const struct fds *master, struct pollfd *pfd, int *reply, int timeout)
+00090 {
+00091     int r;
+00092 
+00093     r = poll(pfd, 1, timeout);
+00094     if (r < 0) {
+00095         perror("poll");
+00096         return -1;
+00097     }
+00098 
+00099     if (r == 0)
+00100         return 1;
+00101 
+00102     if (read(master->r, reply, sizeof(*reply)) != sizeof(*reply)) {
+00103         perror("read");
+00104         return -2;
+00105     }
+00106 
+00107     return 0;
+00108 }
+00109 
+00110 static int
+00111 _slave_send_reply(const struct fds *slave, int reply)
+00112 {
+00113     if (write(slave->w, &reply, sizeof(reply)) == 0) {
+00114         perror("write");
+00115         return -1;
+00116     }
+00117     return 0;
+00118 }
+00119 
+00120 static int
+00121 _slave_recv_path(const struct fds *slave, int *plen, int *dlen, char *path)
+00122 {
+00123     int lengths[2], r;
+00124 
+00125     r = read(slave->r, lengths, sizeof(lengths));
+00126     if (r != sizeof(lengths)) {
+00127         perror("read");
+00128         return -1;
+00129     }
+00130     *plen = lengths[0];
+00131     *dlen = lengths[1];
+00132 
+00133     if (*plen == -1)
+00134         return 0;
+00135 
+00136     if (*plen > PATH_SIZE) {
+00137         fprintf(stderr, "ERROR: path too long (%d/%d)\n", *plen, PATH_SIZE);
+00138         return -2;
+00139     }
+00140 
+00141     r = read(slave->r, path, *plen);
+00142     if (r != *plen) {
+00143         fprintf(stderr, "ERROR: could not read whole path %d/%d\n", r, *plen);
+00144         return -3;
+00145     }
+00146 
+00147     path[*plen] = 0;
+00148     return 0;
+00149 }
+00150 
+00151 
+00152 /***********************************************************************
+00153  * Slave-side.
+00154  ***********************************************************************/
+00155 
+00156 static int
+00157 _db_compile_all_stmts(struct db *db)
+00158 {
+00159     sqlite3 *handle;
+00160 
+00161     handle = db->handle;
+00162     db->transaction_begin = lms_db_compile_stmt_begin_transaction(handle);
+00163     if (!db->transaction_begin)
+00164         return -1;
+00165 
+00166     db->transaction_commit = lms_db_compile_stmt_end_transaction(handle);
+00167     if (!db->transaction_commit)
+00168         return -2;
+00169 
+00170     db->get_file_info = lms_db_compile_stmt_get_file_info(handle);
+00171     if (!db->get_file_info)
+00172         return -4;
+00173 
+00174     db->insert_file_info = lms_db_compile_stmt_insert_file_info(handle);
+00175     if (!db->insert_file_info)
+00176         return -5;
+00177 
+00178     db->update_file_info = lms_db_compile_stmt_update_file_info(handle);
+00179     if (!db->update_file_info)
+00180         return -6;
+00181 
+00182     db->delete_file_info = lms_db_compile_stmt_delete_file_info(handle);
+00183     if (!db->delete_file_info)
+00184         return -6;
+00185 
+00186     db->set_file_dtime = lms_db_compile_stmt_set_file_dtime(handle);
+00187     if (!db->set_file_dtime)
+00188         return -7;
+00189 
+00190     return 0;
+00191 }
+00192 
+00193 static struct db *
+00194 _db_open(const char *db_path)
+00195 {
+00196     struct db *db;
+00197 
+00198     db = calloc(1, sizeof(*db));
+00199     if (!db) {
+00200         perror("calloc");
+00201         return NULL;
+00202     }
+00203 
+00204     if (sqlite3_open(db_path, &db->handle) != SQLITE_OK) {
+00205         fprintf(stderr, "ERROR: could not open DB \"%s\": %s\n",
+00206                 db_path, sqlite3_errmsg(db->handle));
+00207         goto error;
+00208     }
+00209 
+00210     if (lms_db_create_core_tables_if_required(db->handle) != 0) {
+00211         fprintf(stderr, "ERROR: could not setup tables and indexes.\n");
+00212         goto error;
+00213     }
+00214 
+00215     return db;
+00216 
+00217   error:
+00218     sqlite3_close(db->handle);
+00219     free(db);
+00220     return NULL;
+00221 }
+00222 
+00223 static int
+00224 _db_close(struct db *db)
+00225 {
+00226     if (db->transaction_begin)
+00227         lms_db_finalize_stmt(db->transaction_begin, "transaction_begin");
+00228 
+00229     if (db->transaction_commit)
+00230         lms_db_finalize_stmt(db->transaction_commit, "transaction_commit");
+00231 
+00232     if (db->get_file_info)
+00233         lms_db_finalize_stmt(db->get_file_info, "get_file_info");
+00234 
+00235     if (db->insert_file_info)
+00236         lms_db_finalize_stmt(db->insert_file_info, "insert_file_info");
+00237 
+00238     if (db->update_file_info)
+00239         lms_db_finalize_stmt(db->update_file_info, "update_file_info");
+00240 
+00241     if (db->delete_file_info)
+00242         lms_db_finalize_stmt(db->delete_file_info, "delete_file_info");
+00243 
+00244     if (db->set_file_dtime)
+00245         lms_db_finalize_stmt(db->set_file_dtime, "set_file_dtime");
+00246 
+00247     if (sqlite3_close(db->handle) != SQLITE_OK) {
+00248         fprintf(stderr, "ERROR: clould not close DB: %s\n",
+00249                 sqlite3_errmsg(db->handle));
+00250         return -1;
+00251     }
+00252     free(db);
+00253 
+00254     return 0;
+00255 }
+00256 
+00257 static int
+00258 _retrieve_file_status(struct db *db, struct lms_file_info *finfo)
+00259 {
+00260     struct stat st;
+00261     int r;
+00262 
+00263     if (stat(finfo->path, &st) != 0) {
+00264         perror("stat");
+00265         return -1;
+00266     }
+00267 
+00268     r = lms_db_get_file_info(db->get_file_info, finfo);
+00269     if (r == 0) {
+00270         if (st.st_mtime <= finfo->mtime && finfo->size == st.st_size)
+00271             return 0;
+00272         else {
+00273             finfo->mtime = st.st_mtime;
+00274             finfo->size = st.st_size;
+00275             return 1;
+00276         }
+00277     } else if (r == 1) {
+00278         finfo->mtime = st.st_mtime;
+00279         finfo->size = st.st_size;
+00280         return 1;
+00281     } else
+00282         return -2;
+00283 }
+00284 
+00285 static void
+00286 _ctxt_init(struct lms_context *ctxt, const lms_t *lms, sqlite3 *db)
+00287 {
+00288     ctxt->cs_conv = lms->cs_conv;
+00289     ctxt->db = db;
+00290 }
+00291 
+00292 int
+00293 lms_parsers_setup(lms_t *lms, sqlite3 *db)
+00294 {
+00295     struct lms_context ctxt;
+00296     int i;
+00297 
+00298     _ctxt_init(&ctxt, lms, db);
+00299 
+00300     for (i = 0; i < lms->n_parsers; i++) {
+00301         lms_plugin_t *plugin;
+00302         int r;
+00303 
+00304         plugin = lms->parsers[i].plugin;
+00305         r = plugin->setup(plugin, &ctxt);
+00306         if (r != 0) {
+00307             fprintf(stderr, "ERROR: parser \"%s\" failed to setup: %d.\n",
+00308                     plugin->name, r);
+00309             plugin->finish(plugin, &ctxt);
+00310             lms_parser_del_int(lms, i);
+00311             i--; /* cancel i++ */
+00312         }
+00313     }
+00314 
+00315     return 0;
+00316 }
+00317 
+00318 int
+00319 lms_parsers_start(lms_t *lms, sqlite3 *db)
+00320 {
+00321     struct lms_context ctxt;
+00322     int i;
+00323 
+00324     _ctxt_init(&ctxt, lms, db);
+00325 
+00326     for (i = 0; i < lms->n_parsers; i++) {
+00327         lms_plugin_t *plugin;
+00328         int r;
+00329 
+00330         plugin = lms->parsers[i].plugin;
+00331         r = plugin->start(plugin, &ctxt);
+00332         if (r != 0) {
+00333             fprintf(stderr, "ERROR: parser \"%s\" failed to start: %d.\n",
+00334                     plugin->name, r);
+00335             plugin->finish(plugin, &ctxt);
+00336             lms_parser_del_int(lms, i);
+00337             i--; /* cancel i++ */
+00338         }
+00339     }
+00340 
+00341     return 0;
+00342 }
+00343 
+00344 int
+00345 lms_parsers_finish(lms_t *lms, sqlite3 *db)
+00346 {
+00347     struct lms_context ctxt;
+00348     int i;
+00349 
+00350     _ctxt_init(&ctxt, lms, db);
+00351 
+00352     for (i = 0; i < lms->n_parsers; i++) {
+00353         lms_plugin_t *plugin;
+00354         int r;
+00355 
+00356         plugin = lms->parsers[i].plugin;
+00357         r = plugin->finish(plugin, &ctxt);
+00358         if (r != 0)
+00359             fprintf(stderr, "ERROR: parser \"%s\" failed to finish: %d.\n",
+00360                     plugin->name, r);
+00361     }
+00362 
+00363     return 0;
+00364 }
+00365 
+00366 int
+00367 lms_parsers_check_using(lms_t *lms, void **parser_match, struct lms_file_info *finfo)
+00368 {
+00369     int used, i;
+00370 
+00371     used = 0;
+00372     for (i = 0; i < lms->n_parsers; i++) {
+00373         lms_plugin_t *plugin;
+00374         void *r;
+00375 
+00376         plugin = lms->parsers[i].plugin;
+00377         r = plugin->match(plugin, finfo->path, finfo->path_len, finfo->base);
+00378         parser_match[i] = r;
+00379         if (r)
+00380             used = 1;
+00381     }
+00382 
+00383     return used;
+00384 }
+00385 
+00386 int
+00387 lms_parsers_run(lms_t *lms, sqlite3 *db, void **parser_match, struct lms_file_info *finfo)
+00388 {
+00389     struct lms_context ctxt;
+00390     int i, failed, available;
+00391 
+00392     _ctxt_init(&ctxt, lms, db);
+00393 
+00394     failed = 0;
+00395     available = 0;
+00396     for (i = 0; i < lms->n_parsers; i++) {
+00397         lms_plugin_t *plugin;
+00398 
+00399         plugin = lms->parsers[i].plugin;
+00400         if (parser_match[i]) {
+00401             int r;
+00402 
+00403             available++;
+00404             r = plugin->parse(plugin, &ctxt, finfo, parser_match[i]);
+00405             if (r != 0)
+00406                 failed++;
+00407         }
+00408     }
+00409 
+00410     if (!failed)
+00411         return 0;
+00412     else if (failed == available)
+00413         return -1;
+00414     else
+00415         return 1; /* non critical */
+00416 }
+00417 
+00418 static int
+00419 _slave_work(lms_t *lms, struct fds *fds)
+00420 {
+00421     int r, len, base, counter;
+00422     char path[PATH_SIZE];
+00423     void **parser_match;
+00424     struct db *db;
+00425 
+00426     db = _db_open(lms->db_path);
+00427     if (!db)
+00428         return -1;
+00429 
+00430     if (lms_parsers_setup(lms, db->handle) != 0) {
+00431         fprintf(stderr, "ERROR: could not setup parsers.\n");
+00432         r = -2;
+00433         goto end;
+00434     }
+00435 
+00436     if (_db_compile_all_stmts(db) != 0) {
+00437         fprintf(stderr, "ERROR: could not compile statements.\n");
+00438         r = -3;
+00439         goto end;
+00440     }
+00441 
+00442     if (lms_parsers_start(lms, db->handle) != 0) {
+00443         fprintf(stderr, "ERROR: could not start parsers.\n");
+00444         r = -4;
+00445         goto end;
+00446     }
+00447     if (lms->n_parsers < 1) {
+00448         fprintf(stderr, "ERROR: no parser could be started, exit.\n");
+00449         r = -5;
+00450         goto end;
+00451     }
+00452 
+00453     parser_match = malloc(lms->n_parsers * sizeof(*parser_match));
+00454     if (!parser_match) {
+00455         perror("malloc");
+00456         r = -6;
+00457         goto end;
+00458     }
+00459 
+00460     counter = 0;
+00461     lms_db_begin_transaction(db->transaction_begin);
+00462 
+00463     while (((r = _slave_recv_path(fds, &len, &base, path)) == 0) && len > 0) {
+00464         struct lms_file_info finfo;
+00465         int used, r;
+00466 
+00467         finfo.path = path;
+00468         finfo.path_len = len;
+00469         finfo.base = base;
+00470 
+00471         r = _retrieve_file_status(db, &finfo);
+00472         if (r == 0) {
+00473             if (finfo.dtime) {
+00474                 finfo.dtime = 0;
+00475                 lms_db_set_file_dtime(db->set_file_dtime, &finfo);
+00476             }
+00477             goto inform_end;
+00478         } else if (r < 0) {
+00479             fprintf(stderr, "ERROR: could not detect file status.\n");
+00480             goto inform_end;
+00481         }
+00482 
+00483         used = lms_parsers_check_using(lms, parser_match, &finfo);
+00484         if (!used)
+00485             goto inform_end;
+00486 
+00487         finfo.dtime = 0;
+00488         if (finfo.id > 0)
+00489             r = lms_db_update_file_info(db->update_file_info, &finfo);
+00490         else
+00491             r = lms_db_insert_file_info(db->insert_file_info, &finfo);
+00492         if (r < 0) {
+00493             fprintf(stderr, "ERROR: could not register path in DB\n");
+00494             goto inform_end;
+00495         }
+00496 
+00497         r = lms_parsers_run(lms, db->handle, parser_match, &finfo);
+00498         if (r < 0) {
+00499             fprintf(stderr, "ERROR: pid=%d failed to parse \"%s\".\n",
+00500                     getpid(), finfo.path);
+00501             lms_db_delete_file_info(db->delete_file_info, &finfo);
+00502         }
+00503 
+00504       inform_end:
+00505         _slave_send_reply(fds, r);
+00506         counter++;
+00507         if (counter > lms->commit_interval) {
+00508             lms_db_end_transaction(db->transaction_commit);
+00509             lms_db_begin_transaction(db->transaction_begin);
+00510             counter = 0;
+00511         }
+00512     }
+00513 
+00514     free(parser_match);
+00515     lms_db_end_transaction(db->transaction_commit);
+00516   end:
+00517     lms_parsers_finish(lms, db->handle);
+00518     _db_close(db);
+00519 
+00520     return r;
+00521 }
+00522 
+00523 
+00524 /***********************************************************************
+00525  * Master-side.
+00526  ***********************************************************************/
+00527 
+00528 static int
+00529 _consume_garbage(struct pollfd *pfd)
+00530 {
+00531     int r;
+00532 
+00533     while ((r = poll(pfd, 1, 0)) > 0) {
+00534         if (pfd->revents & (POLLERR | POLLHUP | POLLNVAL))
+00535             return 0;
+00536         else if (pfd->revents & POLLIN) {
+00537             char c;
+00538 
+00539             read(pfd->fd, &c, sizeof(c));
+00540         }
+00541     }
+00542 
+00543     return r;
+00544 }
+00545 
+00546 static int
+00547 _close_fds(struct fds *fds)
+00548 {
+00549     int r;
+00550 
+00551     r = 0;
+00552     if (close(fds->r) != 0) {
+00553         r--;
+00554         perror("close");
+00555     }
+00556 
+00557     if (close(fds->w) != 0) {
+00558         r--;
+00559         perror("close");
+00560     }
+00561 
+00562     return r;
+00563 }
+00564 
+00565 int
+00566 lms_close_pipes(struct pinfo *pinfo)
+00567 {
+00568     int r;
+00569 
+00570     r = _close_fds(&pinfo->master);
+00571     r += _close_fds(&pinfo->slave);
+00572 
+00573     return r;
+00574 }
+00575 
+00576 int
+00577 lms_create_pipes(struct pinfo *pinfo)
+00578 {
+00579     int fds[2];
+00580 
+00581     if (pipe(fds) != 0) {
+00582         perror("pipe");
+00583         return -1;
+00584     }
+00585     pinfo->master.r = fds[0];
+00586     pinfo->slave.w = fds[1];
+00587 
+00588     if (pipe(fds) != 0) {
+00589         perror("pipe");
+00590         close(pinfo->master.r);
+00591         close(pinfo->slave.w);
+00592         return -1;
+00593     }
+00594     pinfo->slave.r = fds[0];
+00595     pinfo->master.w = fds[1];
+00596 
+00597     pinfo->poll.fd = pinfo->master.r;
+00598     pinfo->poll.events = POLLIN;
+00599 
+00600     return 0;
+00601 }
+00602 
+00603 int
+00604 lms_create_slave(struct pinfo *pinfo, int (*work)(lms_t *lms, struct fds *fds))
+00605 {
+00606     int r;
+00607 
+00608     pinfo->child = fork();
+00609     if (pinfo->child == -1) {
+00610         perror("fork");
+00611         return -1;
+00612     }
+00613 
+00614     if (pinfo->child > 0)
+00615         return 0;
+00616 
+00617     _close_fds(&pinfo->master);
+00618     nice(19);
+00619     r = work(pinfo->lms, &pinfo->slave);
+00620     lms_free(pinfo->lms);
+00621     _exit(r);
+00622     return r; /* shouldn't reach anyway... */
+00623 }
+00624 
+00625 static int
+00626 _waitpid(pid_t pid)
+00627 {
+00628     int status;
+00629     pid_t r;
+00630 
+00631     r = waitpid(pid, &status, 0);
+00632     if (r > -1)
+00633         return 0;
+00634     else
+00635         perror("waitpid");
+00636 
+00637     return r;
+00638 }
+00639 
+00640 int
+00641 lms_finish_slave(struct pinfo *pinfo, int (*finish)(const struct fds *fds))
+00642 {
+00643     int r;
+00644 
+00645     if (pinfo->child <= 0)
+00646         return 0;
+00647 
+00648     r = finish(&pinfo->master);
+00649     if (r == 0)
+00650         r = _waitpid(pinfo->child);
+00651     else {
+00652         r = kill(pinfo->child, SIGKILL);
+00653         if (r < 0)
+00654             perror("kill");
+00655         else
+00656             r =_waitpid(pinfo->child);
+00657     }
+00658     pinfo->child = 0;
+00659 
+00660     return r;
+00661 }
+00662 
+00663 int
+00664 lms_restart_slave(struct pinfo *pinfo, int (*work)(lms_t *lms, struct fds *fds))
+00665 {
+00666     int status;
+00667 
+00668     if (waitpid(pinfo->child, &status, WNOHANG) > 0) {
+00669         if (WIFEXITED(status)) {
+00670             int code;
+00671 
+00672             code = WEXITSTATUS(status);
+00673             if (code != 0) {
+00674                 fprintf(stderr, "ERROR: slave returned %d, exit.\n", code);
+00675                 pinfo->child = 0;
+00676                 return -1;
+00677             }
+00678         } else {
+00679             if (WIFSIGNALED(status)) {
+00680                 int code;
+00681 
+00682                 code = WTERMSIG(status);
+00683                 fprintf(stderr, "ERROR: slave was terminated by signal %d.\n",
+00684                         code);
+00685             }
+00686             pinfo->child = 0;
+00687             return -1;
+00688         }
+00689     }
+00690 
+00691     if (kill(pinfo->child, SIGKILL))
+00692         perror("kill");
+00693 
+00694     if (waitpid(pinfo->child, &status, 0) < 0)
+00695         perror("waitpid");
+00696 
+00697     _consume_garbage(&pinfo->poll);
+00698     return lms_create_slave(pinfo, work);
+00699 }
+00700 
+00701 static int
+00702 _strcat(int base, char *path, const char *name)
+00703 {
+00704     int new_len, name_len;
+00705 
+00706     name_len = strlen(name);
+00707     new_len = base + name_len;
+00708 
+00709     if (new_len >= PATH_SIZE) {
+00710         path[base] = '\0';
+00711         fprintf(stderr,
+00712                 "ERROR: path concatenation too long %d of %d "
+00713                 "available: \"%s\" + \"%s\"\n", new_len, PATH_SIZE,
+00714                 path, name);
+00715         return -1;
+00716     }
+00717 
+00718     memcpy(path + base, name, name_len + 1);
+00719 
+00720     return new_len;
+00721 }
+00722 
+00723 static int
+00724 _process_file(struct pinfo *pinfo, int base, char *path, const char *name)
+00725 {
+00726     int new_len, reply, r;
+00727 
+00728     new_len = _strcat(base, path, name);
+00729     if (new_len < 0)
+00730         return -1;
+00731 
+00732     if (_master_send_path(&pinfo->master, new_len, base, path) != 0)
+00733         return -2;
+00734 
+00735     r = _master_recv_reply(&pinfo->master, &pinfo->poll, &reply,
+00736                            pinfo->lms->slave_timeout);
+00737     if (r < 0)
+00738         return -3;
+00739     else if (r == 1) {
+00740         fprintf(stderr, "ERROR: slave took too long, restart %d\n",
+00741                 pinfo->child);
+00742         if (lms_restart_slave(pinfo, _slave_work) != 0)
+00743             return -4;
+00744         return 1;
+00745     } else {
+00746         if (reply < 0) {
+00747             /* XXX callback library users to inform error. */
+00748             fprintf(stderr, "ERROR: pid=%d failed to parse \"%s\".\n",
+00749                     getpid(), path);
+00750             return (-reply) << 8;
+00751         } else
+00752             return reply;
+00753     }
+00754 }
+00755 
+00756 static int
+00757 _process_dir(struct pinfo *pinfo, int base, char *path, const char *name)
+00758 {
+00759     DIR *dir;
+00760     struct dirent *de;
+00761     int new_len, r;
+00762 
+00763     new_len = _strcat(base, path, name);
+00764     if (new_len < 0)
+00765         return -1;
+00766     else if (new_len + 1 >= PATH_SIZE) {
+00767         fprintf(stderr, "ERROR: path too long\n");
+00768         return 2;
+00769     }
+00770 
+00771     dir = opendir(path);
+00772     if (dir == NULL) {
+00773         perror("opendir");
+00774         return 3;
+00775     }
+00776 
+00777     path[new_len] = '/';
+00778     new_len++;
+00779 
+00780     r = 0;
+00781     while ((de = readdir(dir)) != NULL) {
+00782         if (de->d_name[0] == '.')
+00783             continue;
+00784         if (de->d_type == DT_REG) {
+00785             if (_process_file(pinfo, new_len, path, de->d_name) < 0) {
+00786                 path[new_len - 1] = '\0';
+00787                 fprintf(stderr,
+00788                         "ERROR: unrecoverable error parsing file, "
+00789                         "exit \"%s\".\n", path);
+00790                 r = -4;
+00791                 goto end;
+00792             }
+00793         } else if (de->d_type == DT_DIR || de->d_type == DT_UNKNOWN) {
+00794             if (_process_dir(pinfo, new_len, path, de->d_name) < 0) {
+00795                 path[new_len - 1] = '\0';
+00796                 fprintf(stderr,
+00797                         "ERROR: unrecoverable error parsing dir, "
+00798                         "exit \"%s\".\n", path);
+00799                 r = -5;
+00800                 goto end;
+00801             }
+00802         }
+00803     }
+00804 
+00805   end:
+00806     closedir(dir);
+00807     return r;
+00808 }
+00809 
+00820 int
+00821 lms_process(lms_t *lms, const char *top_path)
+00822 {
+00823     struct pinfo pinfo;
+00824     int r, len;
+00825     char path[PATH_SIZE], *bname;
+00826 
+00827     if (!lms) {
+00828         r = -1;
+00829         goto end;
+00830     }
+00831 
+00832     if (!top_path) {
+00833         r = -2;
+00834         goto end;
+00835     }
+00836 
+00837     if (lms->is_processing) {
+00838         fprintf(stderr, "ERROR: is already processing.\n");
+00839         r = -3;
+00840         goto end;
+00841     }
+00842 
+00843     if (!lms->parsers) {
+00844         fprintf(stderr, "ERROR: no plugins registered.\n");
+00845         r = -4;
+00846         goto end;
+00847     }
+00848 
+00849     pinfo.lms = lms;
+00850 
+00851     if (lms_create_pipes(&pinfo) != 0) {
+00852         r = -5;
+00853         goto end;
+00854     }
+00855 
+00856     if (lms_create_slave(&pinfo, _slave_work) != 0) {
+00857         r = -6;
+00858         goto close_pipes;
+00859     }
+00860 
+00861     if (realpath(top_path, path) == NULL) {
+00862         perror("realpath");
+00863         r = -7;
+00864         goto finish_slave;
+00865     }
+00866 
+00867     /* search '/' backwards, split dirname and basename, note realpath usage */
+00868     len = strlen(path);
+00869     for (; len >= 0 && path[len] != '/'; len--);
+00870     len++;
+00871     bname = strdup(path + len);
+00872     if (bname == NULL) {
+00873         perror("strdup");
+00874         r = -8;
+00875         goto finish_slave;
+00876     }
+00877 
+00878     lms->is_processing = 1;
+00879     r = _process_dir(&pinfo, len, path, bname);
+00880     lms->is_processing = 0;
+00881     free(bname);
+00882 
+00883   finish_slave:
+00884     lms_finish_slave(&pinfo, _master_send_finish);
+00885   close_pipes:
+00886     lms_close_pipes(&pinfo);
+00887   end:
+00888     return r;
+00889 }
+

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__process_8c.html b/www/api/lightmediascanner__process_8c.html new file mode 100644 index 0000000..7340523 --- /dev/null +++ b/www/api/lightmediascanner__process_8c.html @@ -0,0 +1,498 @@ + + +Light Media Scanner: src/lib/lightmediascanner_process.c File Reference + + + + + +
+ +
+

src/lib/lightmediascanner_process.c File Reference

#include <sys/wait.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <dirent.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "lightmediascanner.h"
+#include "lightmediascanner_private.h"
+#include "lightmediascanner_db_private.h"
+ +

+Include dependency graph for lightmediascanner_process.c:

+ + + +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define _GNU_SOURCE

Functions

int lms_parsers_setup (lms_t *lms, sqlite3 *db)
int lms_parsers_start (lms_t *lms, sqlite3 *db)
int lms_parsers_finish (lms_t *lms, sqlite3 *db)
int lms_parsers_check_using (lms_t *lms, void **parser_match, struct lms_file_info *finfo)
int lms_parsers_run (lms_t *lms, sqlite3 *db, void **parser_match, struct lms_file_info *finfo)
int lms_close_pipes (struct pinfo *pinfo)
int lms_create_pipes (struct pinfo *pinfo)
int lms_create_slave (struct pinfo *pinfo, int(*work)(lms_t *lms, struct fds *fds))
int lms_finish_slave (struct pinfo *pinfo, int(*finish)(const struct fds *fds))
int lms_restart_slave (struct pinfo *pinfo, int(*work)(lms_t *lms, struct fds *fds))
int lms_process (lms_t *lms, const char *top_path)
+


Define Documentation

+ +
+
+ + + + +
#define _GNU_SOURCE
+
+
+ +

+Copyright (C) 2007 by INdT

+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.

+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.

+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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

+

Author:
Gustavo Sverzut Barbieri <gustavo.barbieri@openbossa.org>
+ +

+Definition at line 25 of file lightmediascanner_process.c. +

+

+


Function Documentation

+ +
+
+ + + + + + + + + +
int lms_close_pipes (struct pinfo pinfo  ) 
+
+
+ +

+ +

+Definition at line 566 of file lightmediascanner_process.c. +

+References pinfo::master, and pinfo::slave. +

+Referenced by lms_check(), and lms_process(). +

+

+ +

+
+ + + + + + + + + +
int lms_create_pipes (struct pinfo pinfo  ) 
+
+
+ +

+ +

+Definition at line 577 of file lightmediascanner_process.c. +

+References pinfo::master, pinfo::poll, fds::r, pinfo::slave, and fds::w. +

+Referenced by lms_check(), and lms_process(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_create_slave (struct pinfo pinfo,
int(*)(lms_t *lms, struct fds *fds work 
)
+
+
+ +

+ +

+Definition at line 604 of file lightmediascanner_process.c. +

+References pinfo::child, pinfo::lms, lms_free(), pinfo::master, and pinfo::slave. +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_finish_slave (struct pinfo pinfo,
int(*)(const struct fds *fds finish 
)
+
+
+ +

+ +

+Definition at line 641 of file lightmediascanner_process.c. +

+References pinfo::child, and pinfo::master. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int lms_parsers_check_using (lms_t lms,
void **  parser_match,
struct lms_file_info finfo 
)
+
+ +

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_parsers_finish (lms_t lms,
sqlite3 *  db 
)
+
+
+ +

+ +

+Definition at line 345 of file lightmediascanner_process.c. +

+References lms_plugin::finish, lms::n_parsers, lms::parsers, and parser::plugin. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int lms_parsers_run (lms_t lms,
sqlite3 *  db,
void **  parser_match,
struct lms_file_info finfo 
)
+
+
+ +

+ +

+Definition at line 387 of file lightmediascanner_process.c. +

+References lms::n_parsers, lms_plugin::parse, lms::parsers, and parser::plugin. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_parsers_setup (lms_t lms,
sqlite3 *  db 
)
+
+
+ +

+ +

+Definition at line 293 of file lightmediascanner_process.c. +

+References lms_parser_del_int(), lms::n_parsers, lms::parsers, parser::plugin, and lms_plugin::setup. +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_parsers_start (lms_t lms,
sqlite3 *  db 
)
+
+
+ +

+ +

+Definition at line 319 of file lightmediascanner_process.c. +

+References lms_parser_del_int(), lms::n_parsers, lms::parsers, parser::plugin, and lms_plugin::start. +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_process (lms_t lms,
const char *  top_path 
)
+
+
+ +

+Process the given directory.

+This will add or update media found in the given directory or its children.

+

Parameters:
+ + + +
lms previously allocated Light Media Scanner instance.
top_path top directory to scan.
+
+
Returns:
On success 0 is returned.
+ +

+Definition at line 821 of file lightmediascanner_process.c. +

+References lms::is_processing, pinfo::lms, lms_close_pipes(), lms_create_pipes(), lms_create_slave(), lms_finish_slave(), lms::parsers, and PATH_SIZE. +

+Here is the call graph for this function:

+ + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int lms_restart_slave (struct pinfo pinfo,
int(*)(lms_t *lms, struct fds *fds work 
)
+
+
+ +

+ +

+Definition at line 664 of file lightmediascanner_process.c. +

+References pinfo::child, lms_create_slave(), and pinfo::poll. +

+Here is the call graph for this function:

+ + + +
+

+


Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.map b/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.map new file mode 100644 index 0000000..9854bea --- /dev/null +++ b/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.map @@ -0,0 +1 @@ + diff --git a/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.md5 b/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.md5 new file mode 100644 index 0000000..5a0c040 --- /dev/null +++ b/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.md5 @@ -0,0 +1 @@ +62762b100835173e3e06e968fae996a1 \ No newline at end of file diff --git a/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.png b/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..de3d9388813e6ad1609e9c9c661518c919b67960 GIT binary patch literal 512 zcmV+b0{{JqP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00EduL_t(oh3%MYj>8}f zgnI>kaDZ@yCxjYg}NsK}^%gBC(q zOskiu{CBBXt~aQhyQkWAzGz2-6H!jwxsi>PmYk&R84apnR6g>h6J%bRPU!Tc)Fiht zQ(-tZR185X1CmhEw$~|-=}j1gQSlo{HA50g^3f7BLaTC+TlZAkzS^6G5oWO_(x1j8 z3A28c={Q(vB|;<-9E2iumY+2YrlMz5!lbV@b&76ljYa70Q!TD?&}VNR1ZN!kFD{Eb8PcEN`+Sr z=60X{7pL>2np793I{njoNOgKe#D)L;xL{1G diff --git a/www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.md5 b/www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.md5 new file mode 100644 index 0000000..e3f941e --- /dev/null +++ b/www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.md5 @@ -0,0 +1 @@ +e55f1e94a5d2e367b6febb666c14335c \ No newline at end of file diff --git a/www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.png b/www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..2c19cb5e1d8a3f6f2a902b0c9b3e742f53f7deca GIT binary patch literal 509 zcmVnaKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00EUrL_t(oh3%N>ZNo4O zg)@TnLj%|=1lps5@%CS(ymZD&P$xwVR0JGK7Hxicq>tq0u4T*ZuL(MvK(FkQKptl; z4$gZ1j0$u=YeS&3`uGVnfhN!ddKYN>98kbdP_PexwgNP~kv~|DY!n&+mHlDwhDSi# znt=QhAhg2#DiDeEDWI^^ro{j`$Sf2GUE>e}B8TXsZz>}|TLuDenw%UzjmgmwUY$gd zqbRTE@?Q-QWrQk1F6=>OI_H@w1YzgFHnI!^LXz*#4$fv^g`hIAlL%e|mL4c4%`+YH z$kuEa`2B;j08bQxrFF`|FD4=n1L=XhAPOl^s}KWdR#vXY5Ypj6HVs8wint^sOFmMX`)+mby30oo_hzmi$InQu^5 zvb(N@ + + + + diff --git a/www/api/lightmediascanner__process_8c__incl.md5 b/www/api/lightmediascanner__process_8c__incl.md5 new file mode 100644 index 0000000..a1902b7 --- /dev/null +++ b/www/api/lightmediascanner__process_8c__incl.md5 @@ -0,0 +1 @@ +691954d091cc4954a262a036d6b1422d \ No newline at end of file diff --git a/www/api/lightmediascanner__process_8c__incl.png b/www/api/lightmediascanner__process_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..d27adfd36574b5d9093b1000ec604c669264c141 GIT binary patch literal 12343 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 + + + diff --git a/www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.md5 b/www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.md5 new file mode 100644 index 0000000..ca91093 --- /dev/null +++ b/www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.md5 @@ -0,0 +1 @@ +e52682bdf61c6444457aae1406ddbca3 \ No newline at end of file diff --git a/www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.png b/www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..218605fc76eec2381e3cd60cd1b0a9b100e01d34 GIT binary patch literal 1381 zcmV-r1)BPaP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00jL>L_t(|ob8(dlB6IE zMdt{MRUDwLnhQ*q_gKfu{jai05CO$*l7Ma()Xp;PpuA2{A)kDy%gdjys|gyzXEFe- zh%$_%vvgx<42_{NRAhh{MZ-~Jcd!J5jv3T#8C)sE0Lu^dyi{N+4eLQ|KG|wqsuBz^ zQy6=g3QPqmeXtCJb%5y;yPJQVzjDkl(?S_vD6pfzV^G!#ksapoP{tQ0W>+{K6pn{7 zzF6#St_|oCSJ^RX#)?|2LSu3(00(!a?OeH=_?l<+9T>vW7#hQ8GpviZ-@fm^FIwxF z(qqXxsR+a4QihITh9V4^W+=jtdy+82gJ1?(hOS=>k$svZL-$xPvdtjLfW7CNL6D)t zD&Gup3*j1Q7-%f&>E>L4bjcz-Qniuo(mpxC{~qOa>7I z9)k=5iy=VJL@fzM4nt@KO}z|UBIxLHr8j@&s?iB9L(HmGaNme zDl;5D9_un3KcNl7v2b))TuTze@k>I7S3YPk$}uDsbGZzz5ExR6nU!IY2{fvEHZ1Q# z_Qz_{2!AsflCNvWVATWj0jzYP0v#okH6UBRNX{6125WXe2cUwHRFg)?WJs^@z5*XdzpuCXFi37bn35pTYNqbIE-8P)*A8#aVpAFj!d;2cxM*Wyj>G5^7T3m^=-! zM9)d<`hD4{Nm=*id6XyPSxsk1A=oHbjrT>;3N}1kfg$aPjufjWFr4*(2;WSGm+O8fysP;X#o5bROK1wo&oJKSHrY0#Z?W4VR|}- ztpbBK|60KpOE1#_gB>qJ1z(`O*YPkNxuht=Z11I?!3@R;Enj_1ZucKDTybv(+}abvFy5TKwSzqFx*({Wz=`j}nZ_F&NIbUsYl_y+duRczpL_u4Sfv zaRz}5DWSyl8n!1goIzA$IDv2sVM>ryZ#+pyVHDlS877>sg>{@=N|4Jxu^BR}s9^JC zOp|;)D*@p%cqu`EA$*Mo?K{t?21eE~47qklLTn5{N|4iXw!`=r+mfIqr6GKVz!y&0 z0bk%@GMs45dY=-cY?_*t6P>_g9i+$nF`0yjpOgFPj%^nUJpb|DgInyuxW!(STkOfX z#onY_?9sZzUbS27*%MgxW8v-L~pVt@~Lt|(Rl^DVptlq-p;Qb%8 zlxGNa93!VB7}l1>8RAB@7ASyF5*=?#WWOImt_CUfS@Jhqr00000NkvXXu0mjfI<04o literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.map b/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.map new file mode 100644 index 0000000..788d5ff --- /dev/null +++ b/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.map @@ -0,0 +1 @@ + diff --git a/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.md5 b/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.md5 new file mode 100644 index 0000000..71c0a57 --- /dev/null +++ b/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.md5 @@ -0,0 +1 @@ +e0c9d5b36404f6c62bb378cdae88cbbd \ No newline at end of file diff --git a/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.png b/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..9967cd1bee325e534632e775d1f566fcad6342da GIT binary patch literal 517 zcmV+g0{Z=lP)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00EszL_t(oh3%LPio+lf zg?of`!2`r2tay(VdH27{IzJkd){rz^nu1fp#GmTNdlN%@GuMo-+q(%mF~E+-rNJyt zL~r3!i{@n+%s(HY3wBB`JHQ6m02^TM1N)v{3>NSrFz044#C;(A0_yJV9}Uu zuwoY%P=fc>N+oQpM5o3kvji(vvUU(6wQ>gQTFG|h57)VPSP~b1^7;%UEq>1_F7;X- zuwoaa&c(x$r1)iu7C%j)FHmX~o6i9ydU!@ap3K@dYcP%V$**Ad^A?JiR{xc>_fXpn zX7(Ryn_zq6gI?kTY=C_d*s0(0y`|4As(%q&G6vYuxGvZq<@(f4*B*cB00000NkvXX Hu0mjf(l6%j literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.map b/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.map new file mode 100644 index 0000000..9b56ab4 --- /dev/null +++ b/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.map @@ -0,0 +1,2 @@ + + diff --git a/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.md5 b/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.md5 new file mode 100644 index 0000000..12d2c8c --- /dev/null +++ b/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.md5 @@ -0,0 +1 @@ +fa6cbabb16bc428f9986980da76a441c \ No newline at end of file diff --git a/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.png b/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..5d48330e1556c342101d2f2bdefe962f3424775a GIT binary patch literal 646 zcmV;10(t$3P)naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00JIKL_t(oh3%OOZo?o9 zhI@oki3228h;k4V`TkcKegxuxTavDu8eyqLfX)67JBVgCcUimN{#(K4th0TmU7pRu zNejlR4GUU=PHQQ(G23*~OtzPMYI?j5ZM4qT*^UY9Z0}fS>ukpaek0r1D6sT+42_|U zrr2OMBxUvqN#99ZF&q+x&zLR4;kf*v4TM=+!i+Zk26x_0TGt zMe756jx9>8vS|fXwzx09z~-uKfFI_F4FL6KSY~d>D>l&!2bVeceen?6m;_?7Y<3okx+@Da!V_KII2N`#a@7dP0EjvVtP1f$i@l93CbI?h2qD`e)C}!L3yK}Fcj2~ zH^}-Ov0&(00K2&j8|E#L%Z`l`v|*F1L4M@sW%ZQ5Rj_Ry8W5z+7PxP)xmu{w@0{eU zV3X%#Whg_YQNgR5*tsH(fP0_^AZY@57c`LSXyO=h7( z1V3`5EU7`n%2~qF=u6n?2uNA5&yv9o1yz%>LYl*~B+zbPoUrM$WOL#JOf^F&H4qAg zE(_dP`3|A^&h_N=LpkR+uQ~dCva=l%*xBB(&eqwE3H&>@^Y5h%fv-bNwzFDFZI}OF g$3?BPeW%@j0M9Y4udH3sg8%>k07*qoM6N<$g2tRLNB{r; literal 0 HcmV?d00001 diff --git a/www/api/lightmediascanner__utils_8c-source.html b/www/api/lightmediascanner__utils_8c-source.html new file mode 100644 index 0000000..855670e --- /dev/null +++ b/www/api/lightmediascanner__utils_8c-source.html @@ -0,0 +1,117 @@ + + +Light Media Scanner: src/lib/lightmediascanner_utils.c Source File + + + + + +
+ +
+

src/lib/lightmediascanner_utils.c

Go to the documentation of this file.
00001 #include <lightmediascanner_utils.h>
+00002 #include <ctype.h>
+00003 #include <alloca.h>
+00004 
+00012 void
+00013 lms_strstrip(char *str, unsigned int *p_len)
+00014 {
+00015     int i, len;
+00016     char *p;
+00017 
+00018     len = *p_len;
+00019 
+00020     if (len < 2) /* just '\0'? */
+00021         return;
+00022 
+00023     p = str + len - 1;
+00024     for (i = len - 1; i >= 0; i--) {
+00025         if (isspace(*p)) {
+00026             *p = '\0';
+00027             len--;
+00028             p--;
+00029         } else
+00030             break;
+00031     }
+00032     if (len == 0) {
+00033         *p_len = 0;
+00034         return;
+00035     }
+00036 
+00037     p = str;
+00038     for (i = 0; i < len; i++) {
+00039         if (isspace(*p))
+00040             p++;
+00041         else
+00042             break;
+00043     }
+00044     len -= i;
+00045     if (len == 0) {
+00046         *str = '\0';
+00047         *p_len = 0;
+00048         return;
+00049     }
+00050 
+00051     *p_len = len;
+00052 
+00053     if (str < p)
+00054         for (; len > 0; len--, str++, p++)
+00055             *str = *p;
+00056 }
+00057 
+00068 int
+00069 lms_which_extension(const char *name, unsigned int name_len, const struct lms_string_size *exts, unsigned int exts_len) {
+00070     int i;
+00071     unsigned int *exts_pos;
+00072     const char *s;
+00073 
+00074     exts_pos = alloca(exts_len * sizeof(*exts_pos));
+00075     for (i = 0; i < exts_len; i++)
+00076         exts_pos[i] = exts[i].len;
+00077 
+00078     for (s = name + name_len - 1; s >= name; s--) {
+00079         int i, match;
+00080         char c1, c2;
+00081 
+00082         c1 = *s;
+00083         if (c1 >= 'a')
+00084             c2 = c1;
+00085         else
+00086             c2 = 'a' + c1 - 'A';
+00087 
+00088         match = 0;
+00089         for (i = 0; i < exts_len; i++) {
+00090             if (exts_pos[i] > 0) {
+00091                 char ce;
+00092 
+00093                 ce = exts[i].str[exts_pos[i] - 1];
+00094                 if (ce == c1 || ce == c2) {
+00095                     if (exts_pos[i] == 1)
+00096                         return i;
+00097                     exts_pos[i]--;
+00098                     match = 1;
+00099                 } else
+00100                     exts_pos[i] = 0;
+00101             }
+00102         }
+00103         if (!match)
+00104             return -1;
+00105     }
+00106 
+00107     return -1;
+00108 }
+

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__utils_8c.html b/www/api/lightmediascanner__utils_8c.html new file mode 100644 index 0000000..041b6ad --- /dev/null +++ b/www/api/lightmediascanner__utils_8c.html @@ -0,0 +1,138 @@ + + +Light Media Scanner: src/lib/lightmediascanner_utils.c File Reference + + + + + +
+ +
+

src/lib/lightmediascanner_utils.c File Reference

#include <lightmediascanner_utils.h>
+#include <ctype.h>
+#include <alloca.h>
+ +

+Include dependency graph for lightmediascanner_utils.c:

+ + + +

+Go to the source code of this file. + + + + + + +

Functions

void lms_strstrip (char *str, unsigned int *p_len)
int lms_which_extension (const char *name, unsigned int name_len, const struct lms_string_size *exts, unsigned int exts_len)
+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void lms_strstrip (char *  str,
unsigned int *  p_len 
)
+
+
+ +

+Strips string, in place.

+

Parameters:
+ + + +
str string to be stripped.
p_len string length to analyse, also the place where the final size is stored.
+
+ +

+Definition at line 13 of file lightmediascanner_utils.c. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int lms_which_extension (const char *  name,
unsigned int  name_len,
const struct lms_string_size exts,
unsigned int  exts_len 
)
+
+
+ +

+Find out which of the given extensions matches the given name.

+

Parameters:
+ + + + + +
name string to analyse.
name_len string length.
exts array of extensions to be checked.
exts_len number of items in array exts
+
+
Returns:
index in exts or -1 if it doesn't match none.
+ +

+Definition at line 69 of file lightmediascanner_utils.c. +

+References lms_string_size::str. +

+

+


Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__utils_8c__incl.map b/www/api/lightmediascanner__utils_8c__incl.map new file mode 100644 index 0000000..4ead8cf --- /dev/null +++ b/www/api/lightmediascanner__utils_8c__incl.map @@ -0,0 +1 @@ + diff --git a/www/api/lightmediascanner__utils_8c__incl.md5 b/www/api/lightmediascanner__utils_8c__incl.md5 new file mode 100644 index 0000000..ad1fc86 --- /dev/null +++ b/www/api/lightmediascanner__utils_8c__incl.md5 @@ -0,0 +1 @@ +adc98e112bb9938acab1c866f3f8d1b8 \ No newline at end of file diff --git a/www/api/lightmediascanner__utils_8c__incl.png b/www/api/lightmediascanner__utils_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..c24d1cbfc1878980a72c0fe4f67994130a6f5390 GIT binary patch literal 1303 zcmV+y1?c*TP)v0{{R3gH?(K0000LP)t-s{{R2~ z|Na>naKFF5)6>%c00960|3dn|V*mgE0(4SNQvd*Vlg&5)00gf|L_t(|ob8+qlA|CH zh35#1Q#rt7Pmr=ah?DC3UuB`YL5zQxZ5m?nrgo5^ET6RC$TMH&Qu^~%x&^XoJawz_ zNa_Z%8cXvC*VlMt)p+*Rcx2Uh_SJY~bxj^Sts9`NmvS(-F}beM-fmRE&X+ zqN$a~6F?kO%rgU-5uefPUM;MqS|K<9bhEp0rF zr|~qN#?yG-;pu*I@C?rZ-0vP{x!(Vd_oRK2c!0c>yF7H`x7}iAB6)+SpYilFo|q|_ zhpmT4o|cYQQ$vdv`@h8lJ+~5OxpkfdjlnvZ#B;w3@C;zX3S8m|>=w*&0}O5#`{D4U zJ>8}&^EqD&P!12b#rM;~#<9K98!E|OX_F)#`@av^PQa7yqSuW;*z=J(Tu?T?&k^3bNhtRs4s-xx9 zZy#C_5B=GZ%+vGf-QjV;#5~yMo_WGYaWDJI7Ca2J&11|e51oc&p3nqL;vR`|J@Ldb z#XRsDXp9_qFw%UyO<}j>F%u7?z{r;o+h&u;gJ(!wFkwu^IqsjHyNSjF;1R-)2jRj2 z>{>dGY?R(V8T`~MJn?)AJYk{zm5)h}w_`!dT=OEw(=S?nG;GgXOgu=qQu;p6K*R5O z9kl*{2VO(-gYMssTikdWPvdDkCwMOQyjNUBR!T^@)_+P7mQr-)WYL^^xd?4x}(QtNj*Gt*FZ++OYk63v|PWV$7V@YJl;<6a~U4~ z_JF?!dp$NwD&y&5`_8r=n`44|k+Fqo zZ#}kV9ur&4$ey_4Y$VmpgQn4mhrFZaV|m!X7xC;mPe~ud6MsSE=8+Zikk4{%X$;>Q zxuu$UR)wSYW3%| + +Light Media Scanner: src/lib/lightmediascanner_utils.h Source File + + + + + +
+ +
+

src/lib/lightmediascanner_utils.h

Go to the documentation of this file.
00001 
+00021 #ifndef _LIGHTMEDIASCANNER_UTILS_H_
+00022 #define _LIGHTMEDIASCANNER_UTILS_H_ 1
+00023 
+00024 #ifdef API
+00025 #undef API
+00026 #endif
+00027 
+00028 #ifdef __GNUC__
+00029 # if __GNUC__ >= 4
+00030 #  define API __attribute__ ((visibility("default")))
+00031 # else
+00032 #  define API
+00033 # endif
+00034 # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+00035 #  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))
+00036 # else
+00037 #  define GNUC_NON_NULL(...)
+00038 # endif
+00039 #else
+00040 #  define API
+00041 #  define GNUC_NON_NULL(...)
+00042 #endif
+00043 
+00044 #ifdef __cplusplus
+00045 extern "C" {
+00046 #endif
+00047 
+00048 
+00049     struct lms_string_size {
+00050         char *str;
+00051         unsigned int len;
+00052     };
+00053 
+00054 #define LMS_STATIC_STRING_SIZE(s)  {s, sizeof(s) - 1}
+00055 #define LMS_ARRAY_SIZE(a)  (sizeof(a) / sizeof(*a))
+00056 
+00057 
+00058     API void lms_strstrip(char *str, unsigned int *p_len) GNUC_NON_NULL(1, 2);
+00059     API int lms_which_extension(const char *name, unsigned int name_len, const struct lms_string_size *exts, unsigned int exts_len) GNUC_NON_NULL(1, 3);
+00060 
+00061 
+00062 
+00063 #ifdef __cplusplus
+00064 }
+00065 #endif
+00066 #endif /* _LIGHTMEDIASCANNER_UTILS_H_ */
+

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__utils_8h.html b/www/api/lightmediascanner__utils_8h.html new file mode 100644 index 0000000..f788ac2 --- /dev/null +++ b/www/api/lightmediascanner__utils_8h.html @@ -0,0 +1,232 @@ + + +Light Media Scanner: src/lib/lightmediascanner_utils.h File Reference + + + + + +
+ +
+

src/lib/lightmediascanner_utils.h File Reference

+

+This graph shows which files directly or indirectly include this file:

+ + + +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  lms_string_size

Defines

#define _LIGHTMEDIASCANNER_UTILS_H_   1
#define API
#define GNUC_NON_NULL(...)
#define LMS_STATIC_STRING_SIZE(s)   {s, sizeof(s) - 1}
#define LMS_ARRAY_SIZE(a)   (sizeof(a) / sizeof(*a))

Functions

API void lms_strstrip (char *str, unsigned int *p_len) GNUC_NON_NULL(1
API void API int lms_which_extension (const char *name, unsigned int name_len, const struct lms_string_size *exts, unsigned int exts_len) GNUC_NON_NULL(1
+


Define Documentation

+ +
+
+ + + + +
#define _LIGHTMEDIASCANNER_UTILS_H_   1
+
+
+ +

+Copyright (C) 2007 by INdT

+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.

+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.

+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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

+

Author:
Gustavo Sverzut Barbieri <gustavo.barbieri@openbossa.org>
+ +

+Definition at line 22 of file lightmediascanner_utils.h. +

+

+ +

+
+ + + + +
#define API
+
+
+ +

+ +

+Definition at line 40 of file lightmediascanner_utils.h. +

+

+ +

+
+ + + + + + + + + +
#define GNUC_NON_NULL ( ...   ) 
+
+
+ +

+ +

+Definition at line 41 of file lightmediascanner_utils.h. +

+

+ +

+
+ + + + + + + + + +
#define LMS_ARRAY_SIZE (  )    (sizeof(a) / sizeof(*a))
+
+
+ +

+ +

+Definition at line 55 of file lightmediascanner_utils.h. +

+

+ +

+
+ + + + + + + + + +
#define LMS_STATIC_STRING_SIZE (  )    {s, sizeof(s) - 1}
+
+
+ +

+ +

+Definition at line 54 of file lightmediascanner_utils.h. +

+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
API void lms_strstrip (char *  str,
unsigned int *  p_len 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
API void API int lms_which_extension (const char *  name,
unsigned int  name_len,
const struct lms_string_size exts,
unsigned int  exts_len 
)
+
+
+ +

+ +

+

+


Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/lightmediascanner__utils_8h__dep__incl.map b/www/api/lightmediascanner__utils_8h__dep__incl.map new file mode 100644 index 0000000..39a63d3 --- /dev/null +++ b/www/api/lightmediascanner__utils_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/www/api/lightmediascanner__utils_8h__dep__incl.md5 b/www/api/lightmediascanner__utils_8h__dep__incl.md5 new file mode 100644 index 0000000..f3955cd --- /dev/null +++ b/www/api/lightmediascanner__utils_8h__dep__incl.md5 @@ -0,0 +1 @@ +6c1cec54a95c40d2c24f0fa27d3ca603 \ No newline at end of file diff --git a/www/api/lightmediascanner__utils_8h__dep__incl.png b/www/api/lightmediascanner__utils_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..c9c7883e1cb06dd4f4170bb44cf9262bb6ca635f GIT binary patch literal 2606 zcmZ`*c{J1u8+IwWcBv7PxONHInr~7J#=a|;vDKjY(U9d18k5hyM2M`(GKQ=vzZu*y zLn)IM%Z%iXts+ZfP%?DKa^3sg@0{=$#ikD788~e=HufNv$e5w zR`;=)87mHjcNuY$BMaVTHEKKd)8hzc3g&TEu58p8>mmT5e; z7GdiH^fVpi$euhS8q}OP2F7eufrLDAr9l62{rQ7mNGAq8gGkV-&bXtojET13*h2|~ zGQy=(V^8O+0c&-_d)uuAp?Wb%eyjKBD=J=N=PV=MFLXir@y(^aY8luJ)im_F`*ZaaIfH|khbY)B zm2M40RHKr6rL{J@_+UwSm$e$H?@mFIml0yUK)v}kT_<5 zwPVMH7K#h2xd9qVd~^8NI07JqDL3CG|1g@f&|f193w6Rj%k531#!-;q!gH#`|n_(&#U7cCqe%c0C6yW9uOQNzgQ=v#hL*07lGR=y(TwtdcK;lXGwYR z3B=bbAYh2nl5pXfyecD3Qx3Yhtei+!e9nY)2fgD~U0nSIR4t`LloyDY0JN+*K&`9YV)Aw@~!zaIspM1UanA--0JCEoOYPOjNulgIk{?f$Jxc-{knk~bFp+!dGV`(HCkAs=Eon^8pcp1SmfrnI!X?8wiCQCTB59h5=#Nwy}_ zyQeUu7!DFh;3KTW#4Tpgci)UD6D^~0THDjHozq8o*c@!g)91GqsWnrl*Tt`WeB;i_P2v)&IG&-jx;K7# zT+nNX5R=NiT&LubFETIt_f>ogtd9Id^MSI42%A~l#5$#rHBHO~p={`t*CHQzC3K8y zxxmYzZsBuFikIK4N$w&@iXop8No`QWwd+sZX0MyfbsJ7}>d*ueU&AgZ%5T}=5MQM= z`02Q8l~-ly8sgzO3*N^zA7OJ_uA^*VR)<}Co&taVy0I z70QYji{YG9$Gi{Dy(GfS(?80(eAi0lgOz@nyIAS(=e#93{88S4;P-V+4za;M(m8)F zmg#a$4nR$cw-mMq`lRSd)mUAceY8`hbRu{_=&y5&DN#*;zwVkn0uZJUM7=p%|JyqjvLt{Mlx&mFDK+x+L6c%)qL_>NE3=6_c2r)x{e+Pr_F&wnVHFckuHS z*<>mU+AG%baCo36ja@M_J^Gk^i@CDQE`e;=Ga=D17CV0O#4KwC2F**U3_i4u-ZL(|@N%mmfX(uv_llDo_R&_zPnC#nWx*N7V_M3U+ z@Io($-1L2EK2nNhemHQ0(J>j8bo>Z4%9mTfC@TC1JfarzGEJ!IjsXJ1is-f|8{lfl z%5g0qos6iT8ib|{obZVaL?=H1I-j106HTby8r+H literal 0 HcmV?d00001 diff --git a/www/api/modules.html b/www/api/modules.html new file mode 100644 index 0000000..33ea460 --- /dev/null +++ b/www/api/modules.html @@ -0,0 +1,26 @@ + + +Light Media Scanner: Module Index + + + + + +

Light Media Scanner Modules

Here is a list of all modules: +
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/structfds.html b/www/api/structfds.html new file mode 100644 index 0000000..a6a24c9 --- /dev/null +++ b/www/api/structfds.html @@ -0,0 +1,83 @@ + + +Light Media Scanner: fds Struct Reference + + + + + + +

fds Struct Reference

#include <lightmediascanner_private.h> +

+ + + + + + + +

Data Fields

int r
int w
+


Detailed Description

+ +

+ +

+Definition at line 44 of file lightmediascanner_private.h.


Field Documentation

+ +
+
+ + + + +
int fds::r
+
+
+ +

+ +

+Definition at line 45 of file lightmediascanner_private.h. +

+Referenced by lms_create_pipes(). +

+

+ +

+
+ + + + +
int fds::w
+
+
+ +

+ +

+Definition at line 46 of file lightmediascanner_private.h. +

+Referenced by lms_create_pipes(). +

+

+


The documentation for this struct was generated from the following file: +
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/structlms.html b/www/api/structlms.html new file mode 100644 index 0000000..e72fd70 --- /dev/null +++ b/www/api/structlms.html @@ -0,0 +1,191 @@ + + +Light Media Scanner: lms Struct Reference + + + + + + +

lms Struct Reference

#include <lightmediascanner_private.h> +

+Collaboration diagram for lms:

Collaboration graph
+ + +
[legend]
+ + + + + + + + + + + + + + + + +

Data Fields

parserparsers
int n_parsers
lms_charset_conv_tcs_conv
char * db_path
int slave_timeout
unsigned int commit_interval
unsigned int is_processing:1
+

Detailed Description

+ +

+ +

+Definition at line 64 of file lightmediascanner_private.h.


Field Documentation

+ +

+ +

+ +

+ +
+ +

+ +

+Definition at line 67 of file lightmediascanner_private.h. +

+Referenced by lms_charset_add(), lms_charset_del(), lms_free(), and lms_new(). +

+

+ +

+
+ + + + +
char* lms::db_path
+
+
+ +

+ +

+Definition at line 68 of file lightmediascanner_private.h. +

+Referenced by lms_free(), lms_get_db_path(), and lms_new(). +

+

+ +

+
+ + + + +
int lms::slave_timeout
+
+
+ +

+ +

+Definition at line 69 of file lightmediascanner_private.h. +

+Referenced by lms_get_slave_timeout(), lms_new(), and lms_set_slave_timeout(). +

+

+ +

+
+ + + + +
unsigned int lms::commit_interval
+
+
+ +

+ +

+Definition at line 70 of file lightmediascanner_private.h. +

+Referenced by lms_get_commit_interval(), lms_new(), and lms_set_commit_interval(). +

+

+ +

+
+ + + + +
unsigned int lms::is_processing
+
+ +

+


The documentation for this struct was generated from the following file: +
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/structlms__audio__info.html b/www/api/structlms__audio__info.html new file mode 100644 index 0000000..45588c3 --- /dev/null +++ b/www/api/structlms__audio__info.html @@ -0,0 +1,201 @@ + + +Light Media Scanner: lms_audio_info Struct Reference + + + + + + +

lms_audio_info Struct Reference
+ +[DataBase-API] +

#include <lightmediascanner_db.h> +

+Collaboration diagram for lms_audio_info:

Collaboration graph
+ + +
[legend]
+ + + + + + + + + + + + + + + + + + +

Data Fields

int64_t id
lms_string_size title
lms_string_size artist
lms_string_size album
lms_string_size genre
unsigned int playcnt
unsigned char trackno
unsigned char rating
+

Detailed Description

+ +

+ +

+Definition at line 86 of file lightmediascanner_db.h.


Field Documentation

+ +
+
+ + + + +
int64_t lms_audio_info::id
+
+
+ +

+ +

+Definition at line 87 of file lightmediascanner_db.h. +

+Referenced by lms_db_audio_add(). +

+

+ +

+
+ + + + +
struct lms_string_size lms_audio_info::title [read]
+
+
+ +

+ +

+Definition at line 88 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
struct lms_string_size lms_audio_info::artist [read]
+
+
+ +

+ +

+Definition at line 89 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
struct lms_string_size lms_audio_info::album [read]
+
+
+ +

+ +

+Definition at line 90 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
struct lms_string_size lms_audio_info::genre [read]
+
+
+ +

+ +

+Definition at line 91 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
unsigned int lms_audio_info::playcnt
+
+
+ +

+ +

+Definition at line 92 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
unsigned char lms_audio_info::trackno
+
+
+ +

+ +

+Definition at line 93 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
unsigned char lms_audio_info::rating
+
+
+ +

+ +

+Definition at line 94 of file lightmediascanner_db.h. +

+

+


The documentation for this struct was generated from the following file: +
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/structlms__audio__info__coll__graph.map b/www/api/structlms__audio__info__coll__graph.map new file mode 100644 index 0000000..689b1a2 --- /dev/null +++ b/www/api/structlms__audio__info__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/www/api/structlms__audio__info__coll__graph.md5 b/www/api/structlms__audio__info__coll__graph.md5 new file mode 100644 index 0000000..6e0ee24 --- /dev/null +++ b/www/api/structlms__audio__info__coll__graph.md5 @@ -0,0 +1 @@ +c7008461ae99ff64e800f12d9eac3b09 \ No newline at end of file diff --git a/www/api/structlms__audio__info__coll__graph.png b/www/api/structlms__audio__info__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e2650824463ce8c1d8efeeb4ef00dc091ef57026 GIT binary patch literal 1350 zcmV-M1-bf(P)%c00960|9@l7(f|Me0(4SNQvd*Vlg&5)00iDiL_t(|ob8%xa^oNj zfcFaajQ4+Y1rGm7KjDE6d?N$){hg56{z8&(mVU&$LJ!z0Cazuwgz6@C(+|T4*zLVU;f|d*e8xIRM zl7|JOwJa>yNFElnWRN{9SV^r6@=8*i#5GBki%q3|`z>UtVJmIU^}ov_i&TGdX?7R|fftg8GHdzz+eos5606SrW}BqF2}q|{YI33Dp=CcM(vqTl5c!_| ziE`XA(vk7-a$>HgCxd9ou=fXaNSo~hw#S69MIVn=^*SLP(B3i8ku&Y!?JYzeXCon5 z8(XVE25YBuR=bb7FXt=2h5Vj>E^zWptC`0nR70Kw4%Ygo`wywu68wROw=HJ++h~O2Jszozjg@)8N>{MPOuPVx z@QIAI+MX?uzQ~EBOuUeF3S=l`AsyL=O#`86Frh1KgIMIyLafyR){`7F-?qp90D8NfLwH+wpGdKWtp{UE@vm9JnI$f$#m-LNi)@$sH{ynG<$P# z5~t8pBl)JUv*~CMiTg0~zKC-p^pS_Uu3fFI(g3!5Ug + + + + + diff --git a/www/api/structlms__coll__graph.md5 b/www/api/structlms__coll__graph.md5 new file mode 100644 index 0000000..bb8a9c0 --- /dev/null +++ b/www/api/structlms__coll__graph.md5 @@ -0,0 +1 @@ +56358638e762e6352c9d8267ea330915 \ No newline at end of file diff --git a/www/api/structlms__coll__graph.png b/www/api/structlms__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2d9f9092c0e33936914f4efc0f70c10eaf541aea GIT binary patch literal 1947 zcmV;M2W0q(P)%c00960|9@l7(f|Me0(4SNQvd*Vlg&5)00%QkL_t(|ob8-zcH%k= zfM*NloZSCq3!E&3+oRe4QYN4i#ALWcnN{q=DOE_V)L*%Qno3E71$0@#Op-C_^0o!kDwVl{;A!5{$G*SIJ4sXKr> z8h79jsOiH51EhUISZwnJ1g}Nx2Z;1GVS9~huvNr%he4gdw!#06Jtm3ZpT$pAGO828 z5(n!W%q%6S*HeNLs)U1+8zg}9aESxt6KLu=)4X|!-~fjR);(+l*oPEMEzobF9x^Qo z1fdqjb5IL(fFp#KDB-;c`G^n^XgJCU+0_#SG7R2KWYd#5y8$R5^#Sb&!A6lTkToJg zKD!@50I?RvbEq4!CkF^EQGyaAgh$5@cvwd41H}(UKC^c512!sO5eU7%*;@xeKM-Nu zKA50|uqP8jO`b()i4vrQLxN3AIL5;~LL3Qm1WG?GbM_&orpD}p@d>P9`w$4D_F-HL z{{)k0BR$CwC44NQIKf5n!vtXo@q?QeWA-7$_G9+J*(Vqx_-ip~FhSU@F9v2e^(5W0 zklCn`oPm&w5}r?}#Q}W#Fh@YI=MRJS0a@NmhzXc8ur`7wxmXKy{f6?BBLu(~2f|SN zVDHb87DnTTPbXkx?#|!iPXWP>!chVwFUybv1iDG@#3@;WD#@jHL6>m- zdO6{8y}q1qz4p}T5-yil6E0sD)9HvF!Tp;dTrHukMu+faTQEboI6}K4It2fJm|z|; zH&VJRD>iq35N?3IS6O)dP+DC;S6I^2`?cOQ|5n*`GIXQ5|&s+5^K(61Q$J~+r-jBFD@Zgku1A1EiS3Q?njcu^G+IubE%p_0=A`v>?KeG=+NWaFxnVV@sQwuNg3oNoPg1E!J zY`rrkbCsj;2{lo|s|j%+4H2-om_w*7kHmzy(=ghHcq^+#NM^U+e}VQPtB+<7Xyb$@ z#En{fEs{MT*=8{|A=Ls4qiLfSgFq6}4=w`1dUY9rP8~LPNeQks(}a>J;in0@YF2_0 zl%ND9ybGb^oyzsq6+%(8zWPA~t*=Ic)>k`%)>kXx(S*0F$x*_O66QzLQmp1kigWvf zQZ+}K>tzv^Lp4W|Sz!?h)f^HnO4S@fEli=BL)Md>3!XqY!>Crmc?f6ldP+DC;S6I^ z3C|?7Q|0CQ>L5tCjmxS8B?t&BOt;}2g!OxS!1oLRU}IF{wT3}CFEm%F75Crlg1feM5q=ZM>ha2Ba z)a(P_Otc9cGf}n=bYPi@27zfNigOdzU?2KsqC6fvfg|-1HBaD*5>85ZlzmvyBDfR5 zFi5@s`b`sYG=2!J`A#M|%XdTk2|EJQcV`huu7$|^uinH$Fbo@SVBJl<(v{PVNhRbb z;pmy_pDc?2Y=XaRmav(F702V6*azYIBAHp_Z6_=Y8YpgTUzy!A1Tv7owo!Bnd(y`} zt~a@D$b<-8X^!f70!x(8BoyaS`J<^24i^`LY8<%b_@R7p@qH@sgUwK*yIYgh#<#OQ z(G@zQQCS^0dg}H`3raqFcf4-{5$NKTE`~h;)A&V#?*~k>;|e7?M<>&uqCy}o0)g59 zfskkcwfMo^E&%Wyirwh%LePSZ`j#~&*SewJYcV8BcpjlKVTrKx3CYOLkjFOE+!8dN zHP#n20akZQ4FBwg@|rI?vdn+({b?fST0~DCY{z;ptuML+2$=v|zE@aZBr~|uh8tx9 zwo6I`*c0$m@Pv?!I1+AIPloPr@k20g*tck(oI-bCjmi3I<2~lZ=MosJ#N?6(6L?G1 zofPfE?H1P;F+Z6dC|X{N-v357$@lq(e7Z&ZP$c-)q`ARx_a4HV905#jzju(j#=*z!fDtn4ov$*U(!bSi9002ovPDHLkV1f(lc^m)$ literal 0 HcmV?d00001 diff --git a/www/api/structlms__context.html b/www/api/structlms__context.html new file mode 100644 index 0000000..cd1df77 --- /dev/null +++ b/www/api/structlms__context.html @@ -0,0 +1,79 @@ + + +Light Media Scanner: lms_context Struct Reference + + + + + + +

lms_context Struct Reference

#include <lightmediascanner_plugin.h> +

+ + + + + + + +

Data Fields

sqlite3 * db
lms_charset_conv_tcs_conv
+


Detailed Description

+ +

+ +

+Definition at line 143 of file lightmediascanner_plugin.h.


Field Documentation

+ +
+
+ + + + +
sqlite3* lms_context::db
+
+
+ +

+database instance +

+Definition at line 144 of file lightmediascanner_plugin.h. +

+

+ +

+ +
+ +

+charset conversion tool +

+Definition at line 145 of file lightmediascanner_plugin.h. +

+

+


The documentation for this struct was generated from the following file: +
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/structlms__db__cache.html b/www/api/structlms__db__cache.html new file mode 100644 index 0000000..a08f905 --- /dev/null +++ b/www/api/structlms__db__cache.html @@ -0,0 +1,86 @@ + + +Light Media Scanner: lms_db_cache Struct Reference + + + + + + +

lms_db_cache Struct Reference

#include <lightmediascanner_db_private.h> +

+Collaboration diagram for lms_db_cache:

Collaboration graph
+ + +
[legend]
+ + + + + + +

Data Fields

int size
lms_db_cache_entryentries
+

Detailed Description

+ +

+ +

+Definition at line 62 of file lightmediascanner_db_private.h.


Field Documentation

+ +
+
+ + + + +
int lms_db_cache::size
+
+
+ +

+ +

+Definition at line 63 of file lightmediascanner_db_private.h. +

+Referenced by lms_db_cache_add(), and lms_db_cache_del(). +

+

+ +

+
+ + + + +
struct lms_db_cache_entry* lms_db_cache::entries [read]
+
+
+ +

+ +

+Definition at line 64 of file lightmediascanner_db_private.h. +

+Referenced by lms_db_cache_add(), lms_db_cache_del(), and lms_db_cache_get(). +

+

+


The documentation for this struct was generated from the following file: +
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/structlms__db__cache__coll__graph.map b/www/api/structlms__db__cache__coll__graph.map new file mode 100644 index 0000000..45a2167 --- /dev/null +++ b/www/api/structlms__db__cache__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/www/api/structlms__db__cache__coll__graph.md5 b/www/api/structlms__db__cache__coll__graph.md5 new file mode 100644 index 0000000..48211c2 --- /dev/null +++ b/www/api/structlms__db__cache__coll__graph.md5 @@ -0,0 +1 @@ +5d26d8dd87da6e66eaffed71640915d7 \ No newline at end of file diff --git a/www/api/structlms__db__cache__coll__graph.png b/www/api/structlms__db__cache__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d99c733ec179f3f5d7f84b2b5cc685453794c153 GIT binary patch literal 860 zcmV-i1Ec(jP)%c00960|9@l7(f|Me0(4SNQvd*Vlg&5)00Q($L_t(|ob8%xlB6IE zfaeISRqX%v3YG_PyR!E`%9;m^C^i9{9otE|trRqTlBfyLesrhEuMgwoI1ZYHInASS z#xc%G9GK&uX4ti!w>2rwrj?50YrcpBcyM=s8Q4+>RJka}N-D7gq8!8=SV(jZRLk!~ zL`9{z5=%>4s@!w9S17YAe8auj< z%_BcMI%f7K^>d+;&Ioc^NZrrk1A%X^b*eJWDVAk)*L_ZnbI7s0Y@GXY;5h&OSB?+L z=Wv#X)`d7)6?7{@qY#(`(lc6!3L`{Y}^$}{sEL(=0}F}HiV8+T zlA=BiMzZEWf~68RVP-s2$FSyma~dK;3wn| zPpXSJei}VWG+QkeO6>9hW5wCKOT`hpcqvhCSGZ6-nu(W7VO^jfPk|W6IBSlr3yfnN m;~2*{#%brAlusMvww!+kOIhxYrd;R%0000 + +Light Media Scanner: lms_db_cache_entry Struct Reference + + + + + + +

lms_db_cache_entry Struct Reference

#include <lightmediascanner_db_private.h> +

+ + + + + + + +

Data Fields

const sqlite3 * db
void * data
+


Detailed Description

+ +

+ +

+Definition at line 57 of file lightmediascanner_db_private.h.


Field Documentation

+ +
+
+ + + + +
const sqlite3* lms_db_cache_entry::db
+
+
+ +

+ +

+Definition at line 58 of file lightmediascanner_db_private.h. +

+Referenced by lms_db_cache_add(). +

+

+ +

+
+ + + + +
void* lms_db_cache_entry::data
+
+
+ +

+ +

+Definition at line 59 of file lightmediascanner_db_private.h. +

+Referenced by lms_db_cache_add(), lms_db_cache_del(), and lms_db_cache_get(). +

+

+


The documentation for this struct was generated from the following file: +
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/structlms__file__info.html b/www/api/structlms__file__info.html new file mode 100644 index 0000000..e364ff2 --- /dev/null +++ b/www/api/structlms__file__info.html @@ -0,0 +1,188 @@ + + +Light Media Scanner: lms_file_info Struct Reference + + + + + + +

lms_file_info Struct Reference

#include <lightmediascanner_plugin.h> +

+ + + + + + + + + + + + + + + + + +

Data Fields

const char * path
int path_len
int base
int64_t id
time_t mtime
time_t dtime
size_t size
+


Detailed Description

+ +

+ +

+Definition at line 133 of file lightmediascanner_plugin.h.


Field Documentation

+ +
+
+ + + + +
const char* lms_file_info::path
+
+
+ +

+file path +

+Definition at line 134 of file lightmediascanner_plugin.h. +

+Referenced by lms_db_get_file_info(), lms_db_insert_file_info(), and lms_parsers_check_using(). +

+

+ +

+
+ + + + +
int lms_file_info::path_len
+
+
+ +

+path length +

+Definition at line 135 of file lightmediascanner_plugin.h. +

+Referenced by lms_db_get_file_info(), lms_db_insert_file_info(), and lms_parsers_check_using(). +

+

+ +

+
+ + + + +
int lms_file_info::base
+
+
+ +

+index of basename inside path +

+Definition at line 136 of file lightmediascanner_plugin.h. +

+Referenced by lms_parsers_check_using(). +

+

+ +

+ +

+
+ + + + +
time_t lms_file_info::mtime
+
+
+ +

+in-disk modification time +

+Definition at line 138 of file lightmediascanner_plugin.h. +

+Referenced by lms_db_get_file_info(), lms_db_insert_file_info(), and lms_db_update_file_info(). +

+

+ +

+
+ + + + +
time_t lms_file_info::dtime
+
+
+ +

+deletion time +

+Definition at line 139 of file lightmediascanner_plugin.h. +

+Referenced by lms_db_get_file_info(), lms_db_insert_file_info(), lms_db_set_file_dtime(), and lms_db_update_file_info(). +

+

+ +

+
+ + + + +
size_t lms_file_info::size
+
+
+ +

+file size in bytes +

+Definition at line 140 of file lightmediascanner_plugin.h. +

+Referenced by lms_db_get_file_info(), lms_db_insert_file_info(), and lms_db_update_file_info(). +

+

+


The documentation for this struct was generated from the following file: +
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/structlms__gps__info.html b/www/api/structlms__gps__info.html new file mode 100644 index 0000000..8bdcb40 --- /dev/null +++ b/www/api/structlms__gps__info.html @@ -0,0 +1,101 @@ + + +Light Media Scanner: lms_gps_info Struct Reference + + + + + + +

lms_gps_info Struct Reference
+ +[DataBase-API] +

#include <lightmediascanner_db.h> +

+ + + + + + + + + +

Data Fields

double latitude
double longitude
double altitude
+


Detailed Description

+ +

+ +

+Definition at line 61 of file lightmediascanner_db.h.


Field Documentation

+ +
+
+ + + + +
double lms_gps_info::latitude
+
+
+ +

+ +

+Definition at line 62 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
double lms_gps_info::longitude
+
+
+ +

+ +

+Definition at line 63 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
double lms_gps_info::altitude
+
+
+ +

+ +

+Definition at line 64 of file lightmediascanner_db.h. +

+

+


The documentation for this struct was generated from the following file: +
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/structlms__image__info.html b/www/api/structlms__image__info.html new file mode 100644 index 0000000..18be860 --- /dev/null +++ b/www/api/structlms__image__info.html @@ -0,0 +1,201 @@ + + +Light Media Scanner: lms_image_info Struct Reference + + + + + + +

lms_image_info Struct Reference
+ +[DataBase-API] +

#include <lightmediascanner_db.h> +

+Collaboration diagram for lms_image_info:

Collaboration graph
+ + +
[legend]
+ + + + + + + + + + + + + + + + + + +

Data Fields

int64_t id
lms_string_size title
lms_string_size artist
unsigned int date
unsigned short width
unsigned short height
unsigned short orientation
lms_gps_info gps
+

Detailed Description

+ +

+ +

+Definition at line 67 of file lightmediascanner_db.h.


Field Documentation

+ +
+
+ + + + +
int64_t lms_image_info::id
+
+
+ +

+ +

+Definition at line 68 of file lightmediascanner_db.h. +

+Referenced by lms_db_image_add(). +

+

+ +

+
+ + + + +
struct lms_string_size lms_image_info::title [read]
+
+
+ +

+ +

+Definition at line 69 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
struct lms_string_size lms_image_info::artist [read]
+
+
+ +

+ +

+Definition at line 70 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
unsigned int lms_image_info::date
+
+
+ +

+ +

+Definition at line 71 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
unsigned short lms_image_info::width
+
+
+ +

+ +

+Definition at line 72 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
unsigned short lms_image_info::height
+
+
+ +

+ +

+Definition at line 73 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
unsigned short lms_image_info::orientation
+
+
+ +

+ +

+Definition at line 74 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
struct lms_gps_info lms_image_info::gps [read]
+
+
+ +

+ +

+Definition at line 75 of file lightmediascanner_db.h. +

+

+


The documentation for this struct was generated from the following file: +
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/structlms__image__info__coll__graph.map b/www/api/structlms__image__info__coll__graph.map new file mode 100644 index 0000000..4d1fd17 --- /dev/null +++ b/www/api/structlms__image__info__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/www/api/structlms__image__info__coll__graph.md5 b/www/api/structlms__image__info__coll__graph.md5 new file mode 100644 index 0000000..bed778b --- /dev/null +++ b/www/api/structlms__image__info__coll__graph.md5 @@ -0,0 +1 @@ +ca323b96e715712e3e3f470c8b804d76 \ No newline at end of file diff --git a/www/api/structlms__image__info__coll__graph.png b/www/api/structlms__image__info__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..fa7d7bfcc2759825fb50abeb29b00a4eaf47cf98 GIT binary patch literal 1942 zcmV;H2Wj|;P)%c00960|9@l7(f|Me0(4SNQvd*Vlg&5)00%BfL_t(|ob8-#a-%#9 zfcFSXX6XOs3LOr@GCDwiy!XGt3$~2Kmyr`mB&{^vp{B%7B!9>f_Wo(?~cEQJfTh!8ZIFhQ||(6OWdjn#(QpeH45=xpB5 zic9m#L&vEiR6MFUSveXSOX+X@en*PEZAUf(A{cIWM#BDtmYqt=KW~0-mk;C{70`(4 zH&xX`_eEyz9T}5daLG1xh0rSV@Qy7qjrr*ZKnxmNJrq)p>(_lVPA`olboL72My#Gf zL&psN#Gq5fGj$2YxfJiVy(DyDURY>~-v#26BG5EthaMCz4d9qw5B)gipA0M3-*-3Y zn5;ktyUB8;B|tOiS{&-o*MPobSTTS1{A-_YlZi&dyeWdn4oVXW^pX}xcF?%sh--^J z`Uz;}saz7897G7r`fOhG{du*o1jXoL37wsjj(O9%dZp$ z`7uLiehHurU8Lu%Ru0=~F3Am&>oC_a)$_#;pZObz4HhSH3nVbRfB$EP_*Y!{!l zZ~)bePvKD0J&-iiGCm#6*uHvv`o?KGhdT7Vpq1lH23q%-cQ&s>9qLerI@F;KO}}r~ z75~&%_&ahxuR$Do`!&$}{nH$Jy8?Ruw1?jAw;K~$9#)%ySE%mZaG@u{sAZN>#M-)!+DL|V>2+C`%8`&Na6h1JqDD-<}-lJ_Sy3m8DoeO2n zHCs*hMI1_ZNjz&_CNyu4Xy<)~x=^lLU_&`QNgn#$td8azL03ofO`(VL8#@rFGjC6i z<{Lmi!iJ@`v`3GHLp9xp#16Hp$AfE zw~FcBp|1ojbe5WaR0l1na|yI&LV5$}u@P&g`*Y}WC(?h+Jxl#_(BbP5ai~Kb`a7T< zEUJV(4&H=8Oj9Xm( z2tv_zsRR)U6goa4361qprN%43+}v8wl_e+hP6Z`RAzHEvHXY_t&~$ZEup{Lm0YL6V z$m*upkU0`K7{IE~BXOuhUjbS^0dXYnsHsC8>d^OshGhb4-Tk)EwBY@^06H$ex}#N* zI5e&HMmCsfdI>a{_ZL8;V5nvbtq_Mg)S)Pt7&{rQf>4P6;Oo@ENkHdR4rSXwLmDn- zR@}<>eqI09jRU%>QINGgoW?$b>dr9pm}GV9&`n;ghnqD zql=RlU;QIL|)S(V_=ud)Pvcgvp chw4KA2kX>?h|6{70000007*qoM6N<$f+QW5-~a#s literal 0 HcmV?d00001 diff --git a/www/api/structlms__playlist__info.html b/www/api/structlms__playlist__info.html new file mode 100644 index 0000000..6579024 --- /dev/null +++ b/www/api/structlms__playlist__info.html @@ -0,0 +1,106 @@ + + +Light Media Scanner: lms_playlist_info Struct Reference + + + + + + +

lms_playlist_info Struct Reference
+ +[DataBase-API] +

#include <lightmediascanner_db.h> +

+Collaboration diagram for lms_playlist_info:

Collaboration graph
+ + +
[legend]
+ + + + + + + + +

Data Fields

int64_t id
lms_string_size title
unsigned int n_entries
+

Detailed Description

+ +

+ +

+Definition at line 119 of file lightmediascanner_db.h.


Field Documentation

+ +
+
+ + + + +
int64_t lms_playlist_info::id
+
+
+ +

+ +

+Definition at line 120 of file lightmediascanner_db.h. +

+Referenced by lms_db_playlist_add(). +

+

+ +

+
+ + + + +
struct lms_string_size lms_playlist_info::title [read]
+
+
+ +

+ +

+Definition at line 121 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
unsigned int lms_playlist_info::n_entries
+
+
+ +

+ +

+Definition at line 122 of file lightmediascanner_db.h. +

+

+


The documentation for this struct was generated from the following file: +
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/structlms__playlist__info__coll__graph.map b/www/api/structlms__playlist__info__coll__graph.map new file mode 100644 index 0000000..38594d2 --- /dev/null +++ b/www/api/structlms__playlist__info__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/www/api/structlms__playlist__info__coll__graph.md5 b/www/api/structlms__playlist__info__coll__graph.md5 new file mode 100644 index 0000000..c80de5d --- /dev/null +++ b/www/api/structlms__playlist__info__coll__graph.md5 @@ -0,0 +1 @@ +ede7ac5cfd36a43bf5db1e6c87fe9f7a \ No newline at end of file diff --git a/www/api/structlms__playlist__info__coll__graph.png b/www/api/structlms__playlist__info__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c5f4b8e6e86b1f71f869b826b421e5a6d57c6449 GIT binary patch literal 936 zcmV;Z16TZsP)%c00960|9@l7(f|Me0(4SNQvd*Vlg&5)00TftL_t(|ob8%@mZKmH zz~=~~@45fiEBL&}c72)qA7w)lDgpw=*|F^=twn*K3CKr~esrhg^TT+Q0Tgl%c#Ur3 zjoT&_U7p7cw)`N^hhvAkvn;W{+u9Es{as)`boa=9 zG>2@YilG4O$?;Mt1J$MvGWE9#K=Q~*@c=;^OP*gvhJe-Zu^9h-yv<+6zY(7qy&CwH zI>Yn$+Cenh)p;3o!A~MJBX)Qi@mq?pV?R$WdLDQZQ}Ci5D{iQl{;Aua@p^t}>U;(L zYJPS6&hlsa|JK{o@!|<;?dKun46m_YM0{5@-z>(z4{!df@x~i(yzy7?yOYeHruk=I z`f_rWA8(iP{WxCAk7Kz2Rle`9BJ>L^ws(=dbze>J4 z-~Wt%ZT^?>m-DiXn0uj8nnuSz;cefHeT! z&YgIkej%_Q&-wp*8~#yDVErNQ(l&fzzhrvwu+h&kW!~G*8y82=*tPAjVNz6-bTxjdC2 zV5k2(kk?+a1Y@Tl9St)5cU`~Ei>xQ99|dc}CLUIPiq^Je`@Q}t;+ITylz7n(558jm z + +Light Media Scanner: lms_plugin Struct Reference + + + + + + +

lms_plugin Struct Reference

#include <lightmediascanner_plugin.h> +

+ + + + + + + + + + + + + + + + + +

Data Fields

const char * name
lms_plugin_match_fn_t match
lms_plugin_parse_fn_t parse
lms_plugin_close_fn_t close
lms_plugin_setup_fn_t setup
lms_plugin_start_fn_t start
lms_plugin_finish_fn_t finish
+


Detailed Description

+ +

+ +

+Definition at line 155 of file lightmediascanner_plugin.h.


Field Documentation

+ +
+
+ + + + +
const char* lms_plugin::name
+
+
+ +

+plugin name +

+Definition at line 156 of file lightmediascanner_plugin.h. +

+

+ +

+ +
+ +

+check match +

+Definition at line 157 of file lightmediascanner_plugin.h. +

+Referenced by lms_parsers_check_using(). +

+

+ +

+ +
+ +

+parse matched file +

+Definition at line 158 of file lightmediascanner_plugin.h. +

+Referenced by lms_parsers_run(). +

+

+ +

+ +
+ +

+close plugin +

+Definition at line 159 of file lightmediascanner_plugin.h. +

+

+ +

+ +
+ +

+setup (1st phase init) +

+Definition at line 160 of file lightmediascanner_plugin.h. +

+Referenced by lms_parsers_setup(). +

+

+ +

+ +
+ +

+start (2nd phase init) +

+Definition at line 161 of file lightmediascanner_plugin.h. +

+Referenced by lms_parsers_start(). +

+

+ +

+ +
+ +

+finish plugin +

+Definition at line 162 of file lightmediascanner_plugin.h. +

+Referenced by lms_parsers_finish(). +

+

+


The documentation for this struct was generated from the following file: +
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/structlms__string__size.html b/www/api/structlms__string__size.html new file mode 100644 index 0000000..985791e --- /dev/null +++ b/www/api/structlms__string__size.html @@ -0,0 +1,81 @@ + + +Light Media Scanner: lms_string_size Struct Reference + + + + + + +

lms_string_size Struct Reference

#include <lightmediascanner_utils.h> +

+ + + + + + + +

Data Fields

char * str
unsigned int len
+


Detailed Description

+ +

+ +

+Definition at line 49 of file lightmediascanner_utils.h.


Field Documentation

+ +
+
+ + + + +
char* lms_string_size::str
+
+
+ +

+ +

+Definition at line 50 of file lightmediascanner_utils.h. +

+Referenced by lms_which_extension(). +

+

+ +

+
+ + + + +
unsigned int lms_string_size::len
+
+
+ +

+ +

+Definition at line 51 of file lightmediascanner_utils.h. +

+

+


The documentation for this struct was generated from the following file: +
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/structlms__video__info.html b/www/api/structlms__video__info.html new file mode 100644 index 0000000..1b3c06e --- /dev/null +++ b/www/api/structlms__video__info.html @@ -0,0 +1,106 @@ + + +Light Media Scanner: lms_video_info Struct Reference + + + + + + +

lms_video_info Struct Reference
+ +[DataBase-API] +

#include <lightmediascanner_db.h> +

+Collaboration diagram for lms_video_info:

Collaboration graph
+ + +
[legend]
+ + + + + + + + +

Data Fields

int64_t id
lms_string_size title
lms_string_size artist
+

Detailed Description

+ +

+ +

+Definition at line 105 of file lightmediascanner_db.h.


Field Documentation

+ +
+
+ + + + +
int64_t lms_video_info::id
+
+
+ +

+ +

+Definition at line 106 of file lightmediascanner_db.h. +

+Referenced by lms_db_video_add(). +

+

+ +

+
+ + + + +
struct lms_string_size lms_video_info::title [read]
+
+
+ +

+ +

+Definition at line 107 of file lightmediascanner_db.h. +

+

+ +

+
+ + + + +
struct lms_string_size lms_video_info::artist [read]
+
+
+ +

+ +

+Definition at line 108 of file lightmediascanner_db.h. +

+

+


The documentation for this struct was generated from the following file: +
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/structlms__video__info__coll__graph.map b/www/api/structlms__video__info__coll__graph.map new file mode 100644 index 0000000..9bac214 --- /dev/null +++ b/www/api/structlms__video__info__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/www/api/structlms__video__info__coll__graph.md5 b/www/api/structlms__video__info__coll__graph.md5 new file mode 100644 index 0000000..8b2bade --- /dev/null +++ b/www/api/structlms__video__info__coll__graph.md5 @@ -0,0 +1 @@ +affb01d2ca5625f9c002e3364b21c1de \ No newline at end of file diff --git a/www/api/structlms__video__info__coll__graph.png b/www/api/structlms__video__info__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2ba506fc216ea0ce6ec5858c13c9e2d1e74fa74d GIT binary patch literal 929 zcmV;S177@zP)%c00960|9@l7(f|Me0(4SNQvd*Vlg&5)00TKmL_t(|ob8!ylCvNT zfcFYI!~4Hp!SNuzo$UROvJe6WEgxa0)^?NDqA8CFNcfPip;x~C4r!oAknFK&l>Af@ z)=VBaKx;~xJsA}JWYt@n5!~TT*aTp;v0&q2@Cjx!wovZNTRc*h^}eilfc&`C3 z-HF+ep;UkhpNEr9gU60^|3)+=4b{EZ+Uq@;cngWmfq83xB57*@J;JKN#MXo(sqhBt zDtHERxghbaI@g)5&QnxmzU1@oaLujYFZJ zB@#b9O>?@^`Vw!`)whV`+ayAp{LdQc-%LQ6Pdho_U*d6B#mbvSQPg`HpHpr-SdYhMdzO%dUo4ty5JNm2cbP{{UGS19WsyQcPlx z^Po?73dzTTF4FdN%cCAFPr5FVZU8cy{bU?g&m>8K<3ZQ+Y!xNXCTV_Be5ywh`~h<% z)*eJzasvVBTHXRaL}8xu?eG|7iML@Q)Iq{=)>|wmv)NuwKT{1!lebYrvp1mGTZ2uZ zDET5%7@v#^3y>O_=Gg2tlVQPt4Un$NWDKY!tSqR-S8c}lbZZhGY^~nXdTQPdF&X32 zUzbP{@|MMCt%jtc + +Light Media Scanner: parser Struct Reference + + + + + + +

parser Struct Reference

#include <lightmediascanner_private.h> +

+Collaboration diagram for parser:

Collaboration graph
+ + +
[legend]
+ + + + + + + + +

Data Fields

lms_plugin_tplugin
void * dl_handle
char * so_path
+

Detailed Description

+ +

+ +

+Definition at line 58 of file lightmediascanner_private.h.


Field Documentation

+ +

+ +

+
+ + + + +
void* parser::dl_handle
+
+
+ +

+ +

+Definition at line 60 of file lightmediascanner_private.h. +

+

+ +

+
+ + + + +
char* parser::so_path
+
+
+ +

+ +

+Definition at line 61 of file lightmediascanner_private.h. +

+Referenced by lms_parser_find_and_add(). +

+

+


The documentation for this struct was generated from the following file: +
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/structparser__coll__graph.map b/www/api/structparser__coll__graph.map new file mode 100644 index 0000000..6512b75 --- /dev/null +++ b/www/api/structparser__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/www/api/structparser__coll__graph.md5 b/www/api/structparser__coll__graph.md5 new file mode 100644 index 0000000..b2625fa --- /dev/null +++ b/www/api/structparser__coll__graph.md5 @@ -0,0 +1 @@ +41c356210d44353f0ab99eadd6a24cbd \ No newline at end of file diff --git a/www/api/structparser__coll__graph.png b/www/api/structparser__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..64cf5d8659fda64ed2d374ded5168ecb6f08bec5 GIT binary patch literal 1117 zcmV-j1fu(iP)%c00960|9@l7(f|Me0(4SNQvd*Vlg&5)00Z?&L_t(|ob8%nuB0Fg zfZq|8NjQKedjjJ@jOhXP$KL-63vEGAD0SYr@y*bgdHB#z3but3zsx!L_4O_QXe9uP z^7gg^Hv}x~&%<^jD7A0^>^FdtN)E7#`;j8x3I~AyEQ|H^PypOzKrI3CzOW0Hz9<4V z{G$T=IU+W|csCG$pi=Au-k=0Hhr&vy6?TOb1Z*Lkt2}82;^4;Nl}safC=ictZ>{$N zdZ_HcYk@;#)BzY0VM(H94e+tTgdhP))KmcO5CIT@pb|wtDpY+)0l5XPWR)mtDga43 z@FF0$U=e^eke^fo>>Nm10@Srtd}&vHa`Gn z1yvyN2RO4{B5%_Gu@965sDa&jNnzgX2(+biV%=&oHLnA9cn8uGTSaE&Rev}KV3=IE zQ2GNeW!Nnm03`vqGYHB);GSd1r`rIj6ccbz%?}1Ujeu=CkRTm+95K0N_eM z1H>KgohX2?^A6EFNNoqa0S3+il1j;-@Xk9gn_7S%9k>?g zTk##}KnFe#CO2V86L$>)PMm$df?$N zFX~hSd>fAwz=%LerwTBHuNE-pt+fN!0Dn551Cm@irr~l6r+~o}QaS;!$y-ZcIp-IF zJZa*0pDqII_QIF054c;QXn}ViVSCA{39w{4IvOB*A>pT4>*oPCjIAFD+|V@M9I(Yr zlE3Ax69gu;%pK@}9spR~FBCJZvnxcveWrPJ#k|I%1-RP-9=apgF0TS~>#enB9~g)# zwOW{>O4MluP?eVeqI@!--ec~e^34DjlH#EXNW54Apae)N5#U3l12CMeE=*2oq|5+- z7`q6-5D8NnDZd8W1Y2Yam>~o5aG&|Zlq>|27U~XE0SXg} zSHiCxNSApl$VsYC8Va_(A6AWYK#(}ZDgbIgZSB?oW?Di|nLj|7#LD5GV^Qn~{j j=)mUzXCvP!xg+oog4JW=Y^)E800000NkvXXu0mjfNh#Vt literal 0 HcmV?d00001 diff --git a/www/api/structpinfo.html b/www/api/structpinfo.html new file mode 100644 index 0000000..57bfcd7 --- /dev/null +++ b/www/api/structpinfo.html @@ -0,0 +1,149 @@ + + +Light Media Scanner: pinfo Struct Reference + + + + + + +

pinfo Struct Reference

#include <lightmediascanner_private.h> +

+Collaboration diagram for pinfo:

Collaboration graph
+ + +
[legend]
+ + + + + + + + + + + + +

Data Fields

fds master
fds slave
pollfd poll
lms_tlms
pid_t child
+

Detailed Description

+ +

+ +

+Definition at line 50 of file lightmediascanner_private.h.


Field Documentation

+ +
+
+ + + + +
struct fds pinfo::master [read]
+
+
+ +

+ +

+Definition at line 51 of file lightmediascanner_private.h. +

+Referenced by lms_close_pipes(), lms_create_pipes(), lms_create_slave(), and lms_finish_slave(). +

+

+ +

+
+ + + + +
struct fds pinfo::slave [read]
+
+
+ +

+ +

+Definition at line 52 of file lightmediascanner_private.h. +

+Referenced by lms_close_pipes(), lms_create_pipes(), and lms_create_slave(). +

+

+ +

+
+ + + + +
struct pollfd pinfo::poll [read]
+
+
+ +

+ +

+Definition at line 53 of file lightmediascanner_private.h. +

+Referenced by lms_create_pipes(), and lms_restart_slave(). +

+

+ +

+
+ + + + +
lms_t* pinfo::lms
+
+
+ +

+ +

+Definition at line 54 of file lightmediascanner_private.h. +

+Referenced by lms_check(), lms_create_slave(), and lms_process(). +

+

+ +

+
+ + + + +
pid_t pinfo::child
+
+
+ +

+ +

+Definition at line 55 of file lightmediascanner_private.h. +

+Referenced by lms_create_slave(), lms_finish_slave(), and lms_restart_slave(). +

+

+


The documentation for this struct was generated from the following file: +
Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by  + +doxygen 1.5.2
+ + diff --git a/www/api/structpinfo__coll__graph.map b/www/api/structpinfo__coll__graph.map new file mode 100644 index 0000000..b5be902 --- /dev/null +++ b/www/api/structpinfo__coll__graph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/www/api/structpinfo__coll__graph.md5 b/www/api/structpinfo__coll__graph.md5 new file mode 100644 index 0000000..65651cb --- /dev/null +++ b/www/api/structpinfo__coll__graph.md5 @@ -0,0 +1 @@ +e8aa5ab1319012540c6e71adc8699ec9 \ No newline at end of file diff --git a/www/api/structpinfo__coll__graph.png b/www/api/structpinfo__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6a7f07eeb68d4f809c950d5a18c82653a3d0360c GIT binary patch literal 3039 zcmV<53n27~P)%c00960|9@l7(f|Me0(4SNQvd*Vlg&5)01J0XL_t(|obBCRlA|^d z0N@-Uaus>Et8xOD?-AnayyqeJzd|gj^@kb|qMJ2LYqR4SGRtQqqd!FRn~_ex|E9!u z5(BiRexmiCHUFX#N+{7xz&PDuI+=%&g&3xUIg}`VaTfvhuiNopU*NOt^9Kf-iSYT$ zK>*mDx*zP1?giYdaW5*65*%x;bpBrGGa)l{R!$QC4LH_9Zn^bP~!WE^%{tY0N1(9`kssgR-~@O@##Iq zzNZXfyG}cCf85mxotjrG~fIp*5fUvB6aZ3nDA!&@LaeWWpsR@gc3ISX%@GA zOkX((dp?U1knOiHB?w%9@2V2lY%me=VsxCzDOR2{5?F;JfnxwBBFm^mn4;+uA$T(? z{4j>K`8X}bPb?)Rl=w-6F349x2_=+JLJ1|5_{jv(@B5p#H%O)1hP`zXkNX9P+v9No z;_=v64`@ucnR{sIZT9!5L6G&VJ9$6qihKf1JP1*5GzTEs}c6JcHaQ8k&7@C zVHk*TM#vNHzV7s02vqAsU+n8PmzB9c3cLJZ>|LeNO5pv=NbK$W7wrWS`BN%f`y@~7 z%czjjGeU|7VT@44g6Sr3)6Cu&iMgbN5*$Q2<75aQh=PTfs~q@=6r?n@7iq=dE+VVU zL;NV;UKHUvI0%gE6o?dfkb#I94jGY!Pvj%=jPh|hFz_G;fhk_Ta6=d$1csTwO;t2Q zcEY9u2r4O|L<^x4+Da&)gc3?9p@b4YnV|Z8bUct=f=n6@q>a#cAgzSP18E~P9!L|R z@j#SN;=;t~ZhcZhiHqEPT|KXOsGdu>n<$onkWW|SAd2S|}j47X29PVA=CHAC-Q||y`r=WxqS0t{{;Z#BiUg8>Ow-QQhC6*Vl(D6WGY9w~N z#fE>Ygc3?@C5F|LcmGjbg>a9CoF8Pf5Yw9hWr&6O4xWrEmat0^k{Ja)#;Ry>uO=mw zxGb^UrPL0m5=toX4Mf*UT}O7k7vw-E^!dC zG7n!ef~#j9+lxA*csu_wb~(g`BF3s>A}}>g$?YRr6VX*04o$(gClMG0)Q zfv?rWO}@Cp(90D$^OP4RBv#YD_M($GuDv*-GCwtu8rEM;kd+?&0h|5Mjzic;64ltpZixHB%dE?C(J4V@j5^X-M%5C0udvNQ%7O&IzTzgv!T71 z5^*G*MjM?3Zo=Y@MdHR6DX{qvuV(l>3vKTPf=u(XQ|G8al(;xC_wl5EY6-$ERu5yUiv8ATNHQAB>lqcB?u6#RvY*m#<{xFK7nUlX@!l(Zf5 zQ8Q(6yEhVMuKSn$fBGmM_j{RB{Hq@yMw+e>dqNE8d z$R`QLqcHUi;pZf#LHCrnGEoIFI3-cta<0UciGP*&8lsBPs)P~(#D>ma72SNg!#Z-0 zCAOs1=*JAiT4>@r&dPRTfPjQzyj zRuD^v!9*;D_p14ggbzNx{2op~tOh~jAXdV_?;g@^n^ zweYZym@SMOvGA~;AcNE0Oug{1k8n9f5!A=|dx@Lz7h|XQd@~Y%c%lkUCqk5$Nf`-S zpHso@@BsvQLiQ8X z?#@S0m8}v~BKCI;f^2Sg5X272>UR%O@9>O7UFj+DtB87!rzEE59^DJwMND_8#9W#b z1~1{Sk^fg-`z{}qv730VrI!*)C?QS&zPzQ0*BhiW>h*q#5HEnwU;pwU00fBlXV2hX zz`sZmpKne}*xZ*s3R}j2givu)pWm|)b4dv$HWBM{PL5lz-n(*YkXW@A!xi;JDHCW literal 0 HcmV?d00001 diff --git a/www/api/tab_b.gif b/www/api/tab_b.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d623483ffdf5f9f96900108042a7ab0643fe2a3 GIT binary patch literal 35 ncmZ?wbhEHbWMp7uXkcJy*>IeJfk6j|fqX^=1|}vKMh0sDa2W*H literal 0 HcmV?d00001 diff --git a/www/api/tab_l.gif b/www/api/tab_l.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b1e6337c9299a700401a2a78a2c6ffced475216 GIT binary patch literal 706 zcmZ?wbhEHbZT`}F1e&(Gg}Y(8=I;HA5#Z$3JI=gGB)FQ#odI(O&E^@q;x zK6mr*m3xOS-#u~t!I@i+u0DKm^U160k6t`|^WpV}&n+8{U%dD9&a>B#U%!9-@yol< zU%&tQ{rk_K|NsC0`}dE5ET99@1@a36+kb~?0UJ*yc&I3X_m z!ND^5$O7$#8OFRuDhG}!?8z?cdZK&!`PWjdR;Aj^wZ` zeK{IEYHBJ)6K8VIp1`BVt++swf6j+=L{p1*nO(VhE`pFexG@5$|>uaCcd z`0m=9m+yak{QmXN#Sc$^{$X9h9&q2jiKAI|&T)a;PPx2K9p`YIdw8HtR5k2Q$2-O2 z*;3y{MQ-RnJTgJfI&R5|O)AHxDf_00XbPvDZPy4t=hHd)nfLPvms&O`Ok(sD()5v$ z5U@&h;a=#xbxVbo2~X&Xj0Ie(f{v>vERH+qC+nTG=B8Nca=wU-O$?1&vUgV~9=!H; zx>3p9Yn%*<>t~sk+&0xfyS8RsPfYBd<~wWK%j-LmpU>O7yX^h#UCp1x-p#i7@bE;py8XI6 zmY<)m>~)W~yIWcMVoiPg{duuf<*)9qZ9l$m*Ph&W&$jlv*Vpa+{pH@n=IQ$L?0$ax ec60Ul|8o2P|NVbd{6P)#weSbE3}s?04AuZvx_~SI literal 0 HcmV?d00001 diff --git a/www/api/tab_r.gif b/www/api/tab_r.gif new file mode 100644 index 0000000000000000000000000000000000000000..ce9dd9f533cb5486d6941844f442b59d4a9e9175 GIT binary patch literal 2585 zcmbV}`9Bkk1ILFF--w5zJc=ZZT(zjE=;2|_S)Qm~rCWz1Pc)KPl;jv%A#&v2*x}yc zmf2~Jm~&=xjJY?PqwIN}f8qQ2{r$uH{c*nJbmr{cR5??*egHrs-B=MzCF`3%e{FAW z{oL5xTHn~5TM{jaB;@|_Ue5F&Zb@p(kMyG{*;gWDg zyeL|eZf7Qd8=#bXzSiR{yzRgLSj-fJS8>lBjVHN z^o-0eS=nE6a`W;LChBs=`+QAJP~{b93>H^eRb5kCSC1zUNezun%`L5M?RDzv#%jk7 zYVRX=vATPD`+oEfum^{RM@GjuP?-r=yh0!p;Vx^T9G7~`7%5ydH%70=jyJ;;`d;hv92x3R=z{xp+Lg2!*@OK*K15-t&okoPtSED)h&$RLxdbA zseWm^C3d%-yRNi-ryk^!ek+C`n&~cd$#ZWct_cUL{l~i+Nzx^5d!n94(>bW-iL~Rl z&8r)?q|1DIo=0=judQ{FaGcfLERz8gfn3-Qt<2lksh{mzpT}DXxUuR^z=^key&q4! z+wWI45vL0k$R^(F#{qfqhUsN@WA+w-V?LPH33!Q?WFSB3)WBojE@hK41Nb?KfS+Qo zXgrzfsP$wr4Qzy*{OD>uJBjdgGM@VMml5)2f~_}lD*YyOb}Hjeobhz#4c`w(l^>KK zr?Ud;W~Z}*w;%hZ|2^p^+f06gJDJQD zeIhGADbDmm&6arh(q>EZ<7mjzg7l|z$hRL8=1>)Nv=S7CY$B}iYJ&*T_-T_OG*L1q ztZ3Lana33?y3AKnyq^YCF|4x%Rb5WU&2qcl{TFKey%QJeMxn^SdT!hZ5+0i1zeusiYVp-phBl7b5+Px-X&LhByq z0F&<;K0l2+v>qiHlXb#$jXMv$uK-dEGE9L~qtdU(XeRXmvu*K2Q&6!fD**JxYP4b4BR7FdJ$Qx9G9`J%-_X!a#LGpp3g9)VWytGCa;7`S1_e8F~!R+aSJ zOF17p2`H?2kPs8Q`_;U}+D%3p zs2-0BTqFwpUoBk`?P;iPQ(IbEA|JmMx!P&YYG|R@S=5Mnw;-?A6rEEVyV%d7{iU4a zNk`i!%F(Ykpm`}#oH;BjY->@b8vQedv;pza2FL&*6ufjd+*3Ute&>kes~TU?^KkojsTh(o~(3tk1Y6>4(yn( z#U*ID9@eg-beKo1B;HXe+}{Z%n@7m0+yxivuqk9~;!1LGQlah)xYK4>wgL}l6dsaN zIxlRlq`*`j9PG4*0hD6YV_b_2w5b#)o7J?`q#{GjvvKlD`T*dWcZx<-s(ZvLB44E# z=!|sw!?)@%y$oRNL#25WS3lzdii}TuQ3?CLnvQ1_n};2sT_;Y;#d3=+-(O% zMN$>O!3;ke(UuLR%h_&)N zs^!-@A>QR}4yB1bPp`9S19ikTbZ~O{&FF-yHK{En;mmShDUIEw03`j(DBIsM}Rjki2J#SQa3gFZTKBPDeIiLt9Z z%bL3(B@Qw%(B`wSMS~dPh$=R`(}lBoFXKy(s|*{#ru$wjsBc_O#zxNk9w+UUHmx(U zmJ8+M+ndtnZ<7|VU9Mbt61zpo9T&3%Wx&XII=#QJxjR`CZf22ac3d51Z?GD%LEe_&*t46Qf;4`bZ7p2K(Ab5>GfT^}4! zBT&HZD`^PEgWoI&{~o-ID0F?O`75sm(87x%A{(}Ch1)QlzdJ)1B-eqe5a(weg0`4lQIf1evjvbBY50DVbzO7CLf|vP z2#0(U-|jZ`H{y5N^o7%iK6H>_HEGN->U6^!)1{XpJV!!4(Ig7wzZQ*9WYF4X1rG0x z=1uA@i`rIAciubDC{;~b(|&|A@xkjRP5aRcvRU9tvIm}jDB6J eQ0-6-y)mpwdT=ayS0tBxKDA*~;EWmo literal 0 HcmV?d00001 diff --git a/www/api/tabs.css b/www/api/tabs.css new file mode 100644 index 0000000..c37faaf --- /dev/null +++ b/www/api/tabs.css @@ -0,0 +1,102 @@ +/* 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 : x-small; + 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 : x-small; + 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.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} -- 1.7.9.5