diff --git a/include/tidyenum.h b/include/tidyenum.h index a2feab6..5f96935 100644 --- a/include/tidyenum.h +++ b/include/tidyenum.h @@ -101,6 +101,7 @@ extern "C" { */ #define FOREACH_MSG_MISC(FN) \ /** File can't be opened */ FN(FILE_CANT_OPEN) \ +/** Not a file */ FN(FILE_NOT_FILE) \ /** line %d column %d */ FN(LINE_COLUMN_STRING) \ /** Document content looks like %s */ FN(STRING_CONTENT_LOOKS) \ /** discarding */ FN(STRING_DISCARDING) \ diff --git a/src/config.c b/src/config.c index 17655ed..f47e452 100644 --- a/src/config.c +++ b/src/config.c @@ -601,7 +601,7 @@ TidyTriState TY_(_cfgGetAutoBool)( TidyDocImpl* doc, TidyOptionId optId ) ulong val = TY_(_cfgGet)( doc, optId ); const TidyOptionImpl* opt = &option_defs[ optId ]; assert( opt && opt->type == TidyInteger - && opt->parser == ParseAutoBool ); + && opt->parser == ParsePickList ); return (TidyTriState) val; } @@ -785,7 +785,7 @@ int TY_(ParseConfigFileEnc)( TidyDocImpl* doc, ctmbstr file, ctmbstr charenc ) if ( fin == NULL || enc < 0 ) { - TY_(FileError)( doc, fname, TidyConfig ); + TY_(FileError)( doc, fname, TidyConfig, FILE_CANT_OPEN ); return -1; } else diff --git a/src/language_en.h b/src/language_en.h index 0fccc9d..8628e9b 100644 --- a/src/language_en.h +++ b/src/language_en.h @@ -1549,6 +1549,7 @@ static languageDefinition language_en = { whichPluralForm_en, { ** @rename enum generator FOREACH_MSG_MISC ********************************************/ { FILE_CANT_OPEN, 0, "Can't open \"%s\"\n" }, + { FILE_NOT_FILE, 0, "\"%s\" is not a file!\n" }, { LINE_COLUMN_STRING, 0, "line %d column %d - " }, { STRING_CONTENT_LOOKS, 0, "Document content looks like %s" }, {/* For example, "discarding invalid UTF-16 surrogate pair" */ diff --git a/src/mappedio.c b/src/mappedio.c index f80c978..e5da343 100644 --- a/src/mappedio.c +++ b/src/mappedio.c @@ -326,7 +326,7 @@ int TY_(DocParseFileWithMappedFile)( TidyDocImpl* doc, ctmbstr filnam ) { TY_(freeStreamIn)( in ); } else /* Error message! */ - TY_(FileError)( doc, filnam, TidyError ); + TY_(FileError)( doc, filnam, TidyError, FILE_CANT_OPEN ); return status; } diff --git a/src/message.c b/src/message.c index 48c300f..afea879 100755 --- a/src/message.c +++ b/src/message.c @@ -459,9 +459,9 @@ void TY_(ReportFatal)( TidyDocImpl* doc, Node *element, Node *node, uint code) *********************************************************************/ -void TY_(FileError)( TidyDocImpl* doc, ctmbstr file, TidyReportLevel level ) +void TY_(FileError)( TidyDocImpl* doc, ctmbstr file, TidyReportLevel level, uint code ) { - TidyMessageImpl *message = TY_(tidyMessageCreate)( doc, FILE_CANT_OPEN, level, file); + TidyMessageImpl *message = TY_(tidyMessageCreate)( doc, code, level, file); messageOut( message ); } diff --git a/src/message.h b/src/message.h index 25a96f0..82a3622 100644 --- a/src/message.h +++ b/src/message.h @@ -59,7 +59,7 @@ void TY_(ReportFatal)(TidyDocImpl* doc, Node* element, Node* node, uint code); /** @{ */ -void TY_(FileError)( TidyDocImpl* doc, ctmbstr file, TidyReportLevel level ); +void TY_(FileError)( TidyDocImpl* doc, ctmbstr file, TidyReportLevel level, uint code ); void TY_(ReportAttrError)( TidyDocImpl* doc, Node* node, AttVal* av, uint code ); void TY_(ReportBadArgument)( TidyDocImpl* doc, ctmbstr option ); void TY_(ReportEncodingError)(TidyDocImpl* doc, uint code, uint c, Bool discarded); diff --git a/src/tidylib.c b/src/tidylib.c index c21ceec..00906ca 100755 --- a/src/tidylib.c +++ b/src/tidylib.c @@ -910,7 +910,7 @@ FILE* TIDY_CALL tidySetErrorFile( TidyDoc tdoc, ctmbstr errfilnam ) return errout; } else /* Emit message to current error sink */ - TY_(FileError)( impl, errfilnam, TidyError ); + TY_(FileError)( impl, errfilnam, TidyError, FILE_CANT_OPEN ); } return NULL; } @@ -1075,11 +1075,22 @@ int TIDY_CALL tidyParseSource( TidyDoc tdoc, TidyInputSource* source ) int tidyDocParseFile( TidyDocImpl* doc, ctmbstr filnam ) { + int status = -ENOENT; + FILE* fin = fopen( filnam, "r+" ); + + if ( !fin ) + { + TY_(FileError)( doc, filnam, TidyError, FILE_NOT_FILE ); + return status; + } + + fclose( fin ); + #ifdef _WIN32 return TY_(DocParseFileWithMappedFile)( doc, filnam ); #else - int status = -ENOENT; - FILE* fin = fopen( filnam, "rb" ); + + fin = fopen( filnam, "rb" ); #if PRESERVE_FILE_TIMES struct stat sbuf = {0}; @@ -1106,7 +1117,7 @@ int tidyDocParseFile( TidyDocImpl* doc, ctmbstr filnam ) TY_(freeStreamIn)(in); } else /* Error message! */ - TY_(FileError)( doc, filnam, TidyError ); + TY_(FileError)( doc, filnam, TidyError, FILE_CANT_OPEN ); return status; #endif } @@ -1220,7 +1231,7 @@ int tidyDocSaveFile( TidyDocImpl* doc, ctmbstr filnam ) #endif /* PRESERVFILETIMES */ } if ( status < 0 ) /* Error message! */ - TY_(FileError)( doc, filnam, TidyError ); + TY_(FileError)( doc, filnam, TidyError, FILE_CANT_OPEN ); return status; } diff --git a/version.txt b/version.txt index fa309cc..45b1d41 100644 --- a/version.txt +++ b/version.txt @@ -1,2 +1,2 @@ -5.5.20 -2017.05.07 +5.5.22 +2017.05.13