X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=error.h;h=e792b0581b6c79d70a189ef7000c782b000af763;hp=3daee6af196dcadda49bb51bdad6337c31055693;hb=66b97974ebba5c6ea967b713f84f62a1b72da8d2;hpb=9249294000b235a0a80ee5e8c70f43c186205888 diff --git a/error.h b/error.h index 3daee6af..e792b058 100644 --- a/error.h +++ b/error.h @@ -8,17 +8,15 @@ /** Codes and messages. */ #define PARA_ERRORS \ - PARA_ERROR(AAC_AFH_INIT, "failed to init aac decoder"), \ + PARA_ERROR(SUCCESS, "success"), \ PARA_ERROR(AACDEC_INIT, "failed to init aac decoder"), \ PARA_ERROR(AAC_DECODE, "aac decode error"), \ PARA_ERROR(ACL_PERM, "access denied by acl"), \ - PARA_ERROR(ADD_CALLBACK, "can not add callback"), \ PARA_ERROR(ADDRESS_LOOKUP, "can not resolve requested address"),\ PARA_ERROR(AFH_RECV_BAD_FILENAME, "no file name given"), \ PARA_ERROR(AFS_SHORT_READ, "short read from afs socket"), \ PARA_ERROR(AFS_SIGNAL, "afs caught deadly signal"), \ PARA_ERROR(AFS_SOCKET, "afs socket not writable"), \ - PARA_ERROR(AFS_SYNTAX, "afs syntax error"), \ PARA_ERROR(AFT_SYNTAX, "audio file table syntax error"), \ PARA_ERROR(ALSA, "alsa error"), \ PARA_ERROR(ALSA_MIX_GET_VAL, "could not read control element state"), \ @@ -56,15 +54,11 @@ PARA_ERROR(BAD_BAND, "invalid or unexpected band designator"), \ PARA_ERROR(BAD_CHANNEL_COUNT, "channel count not supported"), \ PARA_ERROR(BAD_CHANNEL, "invalid channel"), \ - PARA_ERROR(BAD_CMD, "invalid command"), \ - PARA_ERROR(BAD_CONFIG, "syntax error in config file"), \ PARA_ERROR(BAD_CT, "invalid chunk table or bad FEC configuration"), \ PARA_ERROR(BAD_FEATURE, "invalid feature request"), \ PARA_ERROR(BAD_FEC_HEADER, "invalid fec header"), \ - PARA_ERROR(BAD_FILTER_OPTIONS, "invalid filter option given"), \ PARA_ERROR(BAD_LL, "invalid loglevel"), \ PARA_ERROR(BAD_PATH, "invalid path"), \ - PARA_ERROR(BAD_PLAY_CMD, "invalid command"), \ PARA_ERROR(BAD_PRIVATE_KEY, "invalid private key"), \ PARA_ERROR(BAD_SAMPLE_FORMAT, "sample format not supported"), \ PARA_ERROR(BAD_SAMPLERATE, "sample rate not supported"), \ @@ -88,13 +82,11 @@ PARA_ERROR(CREATE_OPUS_DECODER, "could not create opus decoder"), \ PARA_ERROR(DCCP_OVERRUN, "dccp output buffer buffer overrun"), \ PARA_ERROR(DECRYPT, "decrypt error"), \ - PARA_ERROR(DEFAULT_COMP, "can not find default audio output component"), \ PARA_ERROR(DUMMY_ROW, "attempted to access blob dummy object"), \ PARA_ERROR(DUP_PIPE, "exec error: can not create pipe"), \ PARA_ERROR(EMPTY, "file is empty"), \ PARA_ERROR(ENCRYPT, "encrypt error"), \ PARA_ERROR(EOF, "end of file"), \ - PARA_ERROR(ESDS, "did not find esds atom"), \ PARA_ERROR(FEC_BAD_IDX, "invalid index vector"), \ PARA_ERROR(FECDEC_EOF, "received eof packet"), \ PARA_ERROR(FECDEC_OVERRUN, "fecdec output buffer overrun"), \ @@ -135,7 +127,6 @@ PARA_ERROR(ID3_SETENCODING, "could not set id3 text encoding field"), \ PARA_ERROR(ID3_SETSTRING, "could not set id3 string field"), \ PARA_ERROR(INCOHERENT_BLOCK_LEN, "incoherent block length"), \ - PARA_ERROR(INVALID_AUDIOD_CMD, "invalid command"), \ PARA_ERROR(KEY_MARKER, "invalid/missing key header or footer"), \ PARA_ERROR(KEY_PERM, "unprotected private key"), \ PARA_ERROR(LIBSAMPLERATE, "secret rabbit code error"), \ @@ -149,16 +140,20 @@ PARA_ERROR(MP3DEC_CORRUPT, "too many corrupt frames"), \ PARA_ERROR(MP3DEC_EOF, "mp3dec: end of file"), \ PARA_ERROR(MP3_INFO, "could not read mp3 info"), \ - PARA_ERROR(MP4ASC, "audio spec config error"), \ - PARA_ERROR(MP4V2, "mp4v2 library error"), \ + PARA_ERROR(MP4FF_BAD_CHANNEL_COUNT, "mp4ff: invalid number of channels"), \ + PARA_ERROR(MP4FF_BAD_SAMPLE, "mp4ff: invalid sample number"), \ + PARA_ERROR(MP4FF_BAD_SAMPLERATE, "mp4ff: invalid sample rate"), \ + PARA_ERROR(MP4FF_BAD_SAMPLE_COUNT, "mp4ff: invalid number of samples"), \ + PARA_ERROR(MP4FF_META_READ, "mp4ff: could not read mp4 metadata"), \ + PARA_ERROR(MP4FF_META_WRITE, "mp4ff: could not update mp4 metadata"), \ + PARA_ERROR(MP4FF_OPEN, "mp4ff: open failed"), \ + PARA_ERROR(MP4FF_TRACK, "mp4ff: no audio track"), \ PARA_ERROR(MPI_SCAN, "could not scan multi-precision integer"), \ PARA_ERROR(NAME_TOO_LONG, "name too long for struct sockaddr_un"), \ PARA_ERROR(NO_AFHI, "audio format handler info required"), \ PARA_ERROR(NO_ATTRIBUTES, "no attributes defined yet"), \ PARA_ERROR(NO_AUDIO_FILE, "no audio file"), \ - PARA_ERROR(NO_CONFIG, "config file not found"), \ PARA_ERROR(NOFD, "did not receive open fd from afs"), \ - PARA_ERROR(NO_FILTERS, "at least one filter must be given"), \ PARA_ERROR(NO_MATCH, "no matches"), \ PARA_ERROR(NO_MOOD, "no mood available"), \ PARA_ERROR(NO_MORE_SLOTS, "no more empty slots"), \ @@ -175,7 +170,6 @@ PARA_ERROR(OGG_PACKET_IN, "ogg_stream_packetin() failed"), \ PARA_ERROR(OGG_STREAM_FLUSH, "ogg_stream_flush() failed"), \ PARA_ERROR(OGG_SYNC, "internal ogg storage overflow"), \ - PARA_ERROR(OPEN_COMP, "OpenAComponent() error"), \ PARA_ERROR(OPUS_COMMENT, "invalid or corrupted opus comment"), \ PARA_ERROR(OPUS_DECODE, "opus decode error"), \ PARA_ERROR(OPUS_HEADER, "invalid opus header"), \ @@ -184,15 +178,12 @@ PARA_ERROR(PERM, "permission denied"), \ PARA_ERROR(PLAYLIST_EMPTY, "attempted to load empty playlist"), \ PARA_ERROR(PLAYLIST_LOADED, ""), /* not really an error */ \ - PARA_ERROR(PLAY_SYNTAX, "para_play: syntax error"), \ PARA_ERROR(PREBUFFER_SUCCESS, "prebuffering complete"), \ PARA_ERROR(PRIVATE_KEY, "can not read private key"), \ - PARA_ERROR(PUBLIC_KEY, "can not read public key"), \ PARA_ERROR(QUEUE, "packet queue overrun"), \ PARA_ERROR(READ_PATTERN, "did not read expected pattern"), \ PARA_ERROR(RECV_EOF, "end of file"), \ PARA_ERROR(RECVMSG, "recvmsg() failed"), \ - PARA_ERROR(RECV_SYNTAX, "recv syntax error"), \ PARA_ERROR(REGEX, "regular expression error"), \ PARA_ERROR(RESAMPLE_EOF, "resample filter: end of file"), \ PARA_ERROR(RSA, "RSA error"), \ @@ -225,14 +216,11 @@ PARA_ERROR(SSH_PARSE, "could not parse ssh public key"), \ PARA_ERROR(STAT_ITEM_PARSE, "failed to parse status item"), \ PARA_ERROR(STATUS_TIMEOUT, "status item timeout"), \ - PARA_ERROR(STCO, "did not find stco atom"), \ - PARA_ERROR(STREAM_FORMAT, "could not set stream format"), \ PARA_ERROR(STREAM_PACKETIN, "ogg stream packet-in error"), \ PARA_ERROR(STREAM_PACKETOUT, "ogg stream packet-out error"), \ PARA_ERROR(STREAM_PAGEIN, "ogg stream page-in error"), \ PARA_ERROR(STREAM_PAGEOUT, "ogg stream page-out error"), \ PARA_ERROR(STRFTIME, "strftime() failed"), \ - PARA_ERROR(STSZ, "did not find stcz atom"), \ PARA_ERROR(SYNC_COMPLETE, "all buddies in sync"), \ PARA_ERROR(SYNC_LISTEN_FD, "no fd to listen on"), \ PARA_ERROR(SYNC_PAGEOUT, "ogg sync page-out error (no ogg file?)"), \ @@ -242,8 +230,6 @@ PARA_ERROR(TOO_MANY_CLIENTS, "maximal number of stat clients exceeded"), \ PARA_ERROR(UCRED_PERM, "permission denied"), \ PARA_ERROR(UDP_OVERRUN, "output buffer overrun"), \ - PARA_ERROR(UNIT_INIT, "AudioUnitInitialize() error"), \ - PARA_ERROR(UNIT_START, "AudioUnitStart() error"), \ PARA_ERROR(UNKNOWN_STAT_ITEM, "status item not recognized"), \ PARA_ERROR(UNSUPPORTED_AUDIO_FORMAT, "given audio format not supported"), \ PARA_ERROR(UNSUPPORTED_FILTER, "given filter not supported"), \ @@ -286,19 +272,28 @@ extern const char * const para_errlist[]; */ #define OSL_ERROR_BIT 29 +#define LLS_ERROR_BIT 28 + /** Check whether the system error bit is set. */ #define IS_SYSTEM_ERROR(num) (!!((num) & (1 << SYSTEM_ERROR_BIT))) /** Check whether the osl error bit is set. */ #define IS_OSL_ERROR(num) (!!((num) & (1 << OSL_ERROR_BIT))) +/** Check whether the lopsub error bit is set. */ +#define IS_LLS_ERROR(num) (!!((num) & (1 << LLS_ERROR_BIT))) + /** Set the system error bit for the given number. */ #define ERRNO_TO_PARA_ERROR(num) ((num) | (1 << SYSTEM_ERROR_BIT)) /** Set the osl error bit for the given number. */ #define OSL_ERRNO_TO_PARA_ERROR(num) ((num) | (1 << OSL_ERROR_BIT)) +/** Set the lopsub error bit for the error code. */ +#define LLS_ERRNO_TO_PARA_ERROR(num) ((num) | (1 << LLS_ERROR_BIT)) + static const char *weak_osl_strerror(int) __attribute__ ((weakref("osl_strerror"))); +static const char *weak_lls_strerror(int) __attribute__ ((weakref("lls_strerror"))); /** * Paraslash's version of strerror(3). * @@ -313,6 +308,10 @@ _static_inline_ const char *para_strerror(int num) assert(weak_osl_strerror); return weak_osl_strerror(num & ~(1U << OSL_ERROR_BIT)); } + if (IS_LLS_ERROR(num)) { + assert(weak_lls_strerror); + return weak_lls_strerror(num & ~(1U << LLS_ERROR_BIT)); + } if (IS_SYSTEM_ERROR(num)) return strerror(num & ~(1U << SYSTEM_ERROR_BIT)); return para_errlist[num]; @@ -335,3 +334,16 @@ _static_inline_ int osl(int ret) return ret; return -OSL_ERRNO_TO_PARA_ERROR(-ret); } + +/** + * Wrapper for lopsub library calls. + * + * \param ret See \ref osl(). + * \return See \ref osl(). + */ +_static_inline_ int lls(int ret) +{ + if (ret >= 0) + return ret; + return -LLS_ERRNO_TO_PARA_ERROR(-ret); +}