Changeset 17589 in niluje


Ignore:
Timestamp:
Jul 29, 2020, 4:03:18 AM (2 weeks ago)
Author:
NiLuJe
Message:

MobiCover:

  • Now with less code duplication, and using an actually public API ;p
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Configs/trunk/Kindle/Touch_Hacks/MobiCover/LibMobi/mobicover.c

    r17588 r17589  
    2424#include <unistd.h>
    2525
     26#include <meta.h>
    2627#include <mobi.h>
    27 #include <meta.h>
    2828#include <nettle/base16.h>
    2929#include <nettle/sha1.h>
     
    381381
    382382                                // Abort if it's not an EBOK or a PDOC
    383                                 if (access("/mnt/us/linkss/periodicals", F_OK) == 0) {
    384                                         char *cde_type = mobi_meta_get_exthstring(m, EXTH_DOCTYPE);
     383                                MOBIExthHeader* exth = mobi_get_exthrecord_by_tag(m, EXTH_DOCTYPE);
     384                                if (exth == NULL) {
     385                                        fprintf(stderr, "No CDE Type in EXTH for input file `%s`!\n", infile);
     386                                        mobi_free(m);
     387                                        return ERRCODE(EXIT_FAILURE);
     388                                } else {
     389                                        char* cde_type = mobi_decode_exthstring(m, exth->data, exth->size);
    385390                                        if (cde_type == NULL) {
    386                                                 fprintf(stderr, "No CDE Type in EXTH for input file `%s`!\n", infile);
    387                                                 free(cde_type);
    388                                                 mobi_free(m);
    389                                                 return ERRCODE(EXIT_FAILURE);
    390                                         } else {
    391                                                 if (strcmp(cde_type, "EBOK") != 0 && strcmp(cde_type, "PDOC") != 0 && strcmp(cde_type, "MAGZ") != 0 && strcmp(cde_type, "NWPR") != 0) {
    392                                                         fprintf(stderr, "Input file `%s` is neither a book, a periodical, nor a personal document!\n", infile);
    393                                                         free(cde_type);
    394                                                         mobi_free(m);
    395                                                         return ERRCODE(EXIT_FAILURE);
    396                                                 }
    397                                         }
    398                                         free(cde_type);
    399                                 } else {
    400                                         char *cde_type = mobi_meta_get_exthstring(m, EXTH_DOCTYPE);
    401                                         if (cde_type == NULL) {
    402                                                 fprintf(stderr, "No CDE Type in EXTH for input file `%s`!\n", infile);
     391                                                fprintf(stderr,
     392                                                        "Failed to decode CDE Type in EXTH for input file `%s`!\n",
     393                                                        infile);
    403394                                                free(cde_type);
    404395                                                mobi_free(m);
     
    406397                                        } else {
    407398                                                if (strcmp(cde_type, "EBOK") != 0 && strcmp(cde_type, "PDOC") != 0) {
    408                                                         fprintf(stderr, "Input file `%s` is neither a book nor a personal document!\n", infile);
     399                                                        fprintf(
     400                                                            stderr,
     401                                                            "Input file `%s` is neither a book nor a personal document!\n",
     402                                                            infile);
    409403                                                        free(cde_type);
    410404                                                        mobi_free(m);
    411405                                                        return ERRCODE(EXIT_FAILURE);
    412406                                                }
     407                                                // Do we want to parse periodicals, too?
     408                                                if (access("/mnt/us/linkss/periodicals", F_OK) == 0) {
     409                                                        if (strcmp(cde_type, "MAGZ") != 0 &&
     410                                                            strcmp(cde_type, "NWPR") != 0) {
     411                                                                fprintf(stderr,
     412                                                                        "Input file `%s` is not a periodical either!\n",
     413                                                                        infile);
     414                                                                free(cde_type);
     415                                                                mobi_free(m);
     416                                                                return ERRCODE(EXIT_FAILURE);
     417                                                        }
     418                                                }
    413419                                        }
    414420                                        free(cde_type);
    415421                                }
    416 
    417 
    418422                        }
    419423
Note: See TracChangeset for help on using the changeset viewer.