message enhancements 2nd edition

This commit is contained in:
Thomas Schmitt 2008-02-22 19:39:09 +01:00
parent a98b4eda40
commit 3fa3292564
5 changed files with 47 additions and 6 deletions

View File

@ -16,6 +16,7 @@
#include <stdlib.h>
#include <string.h>
int iso_file_src_cmp(const void *n1, const void *n2)
{
const IsoFileSrc *f1, *f2;
@ -272,6 +273,7 @@ int filesrc_writer_write_data(IsoImageWriter *writer)
* 0's to image
*/
name = iso_stream_get_name(file->stream);
iso_report_errfile(name, ISO_FILE_CANT_WRITE, 0, 0);
res = iso_msg_submit(t->image->id, ISO_FILE_CANT_WRITE, res,
"File \"%s\" can't be opened. Filling with 0s.", name);
free(name);
@ -289,6 +291,7 @@ int filesrc_writer_write_data(IsoImageWriter *writer)
continue;
} else if (res > 1) {
name = iso_stream_get_name(file->stream);
iso_report_errfile(name, ISO_FILE_CANT_WRITE, 0, 0);
res = iso_msg_submit(t->image->id, ISO_FILE_CANT_WRITE, 0,
"Size of file \"%s\" has changed. It will be %s", name,
(res == 2 ? "truncated" : "padded with 0's"));
@ -327,6 +330,7 @@ int filesrc_writer_write_data(IsoImageWriter *writer)
if (b < nblocks) {
/* premature end of file, due to error or eof */
char *name = iso_stream_get_name(file->stream);
iso_report_errfile(name, ISO_FILE_CANT_WRITE, 0, 0);
if (res < 0) {
/* error */
res = iso_msg_submit(t->image->id, ISO_FILE_CANT_WRITE, res,

View File

@ -1,5 +1,5 @@
/* libiso_msgs (generated from libdax_msgs : Qua Fev 13 14:58:12 CET 2008)
/* libiso_msgs (generated from libdax_msgs : Fri Feb 22 19:35:41 CET 2008)
Message handling facility of libisofs.
Copyright (C) 2006 - 2008 Thomas Schmitt <scdbackup@gmx.net>,
provided under GPL version 2
@ -268,10 +268,12 @@ int libiso_msgs__text_to_sev(char *severity_name, int *severity,
*severity= LIBISO_MSGS_SEV_UPDATE;
else if(strncmp(severity_name,"DEBUG",5)==0)
*severity= LIBISO_MSGS_SEV_DEBUG;
else if(strncmp(severity_name,"ERRFILE",8)==0)
*severity= LIBISO_MSGS_SEV_ERRFILE;
else if(strncmp(severity_name,"ALL",3)==0)
*severity= LIBISO_MSGS_SEV_ALL;
else {
*severity= LIBISO_MSGS_SEV_NEVER;
*severity= LIBISO_MSGS_SEV_ALL;
return(0);
}
return(1);
@ -282,7 +284,7 @@ int libiso_msgs__sev_to_text(int severity, char **severity_name,
int flag)
{
if(flag&1) {
*severity_name= "NEVER\nABORT\nFATAL\nFAILURE\nMISHAP\nSORRY\nWARNING\nHINT\nNOTE\nUPDATE\nDEBUG\nALL";
*severity_name= "NEVER\nABORT\nFATAL\nFAILURE\nMISHAP\nSORRY\nWARNING\nHINT\nNOTE\nUPDATE\nDEBUG\nERRFILE\nALL";
return(1);
}
*severity_name= "";
@ -308,6 +310,8 @@ int libiso_msgs__sev_to_text(int severity, char **severity_name,
*severity_name= "UPDATE";
else if(severity>=LIBISO_MSGS_SEV_DEBUG)
*severity_name= "DEBUG";
else if(severity>=LIBISO_MSGS_SEV_ERRFILE)
*severity_name= "ERRFILE";
else if(severity>=LIBISO_MSGS_SEV_ALL)
*severity_name= "ALL";
else {

View File

@ -1,5 +1,5 @@
/* libiso_msgs (generated from libdax_msgs : Qua Fev 13 14:58:12 CET 2008)
/* libiso_msgs (generated from libdax_msgs : Fri Feb 22 19:35:41 CET 2008)
Message handling facility of libisofs.
Copyright (C) 2006-2008 Thomas Schmitt <scdbackup@gmx.net>,
provided under GPL version 2
@ -120,6 +120,19 @@ struct libiso_msgs_item;
*/
#define LIBISO_MSGS_SEV_ALL 0x00000000
/** Messages of this severity shall transport plain disk file paths
whenever an event of severity SORRY or above is related with an
individual disk file.
No message text shall be added to the file path. The ERRFILE message
shall be issued before the human readable message which carries the
true event severity. That message should contain the file path so it
can be found by strstr(message, path)!=NULL.
The error code shall be the same as with the human readable message.
*/
#define LIBISO_MSGS_SEV_ERRFILE 0x08000000
/** Debugging messages not to be visible to normal users by default
*/
#define LIBISO_MSGS_SEV_DEBUG 0x10000000
@ -149,7 +162,7 @@ struct libiso_msgs_item;
like ISO image generation. A precondition for such a severity ease is
that the action can be continued after the incident.
See below MISHAP for what xorriso would need instead of this kind of SORRY
an generates for itself in case of libisofs image generation.
and generates for itself in case of libisofs image generation.
E.g.: A pattern yields no result.
A speed setting cannot be made.
@ -610,6 +623,7 @@ Range "application" : 0x00040000 to 0x0004ffff
0x00040005 (NOTE,HIGH) : Application supplied message
0x00040006 (UPDATE,HIGH) : Application supplied message
0x00040007 (DEBUG,HIGH) : Application supplied message
0x00040008 (*,HIGH) : Application supplied message
------------------------------------------------------------------------------

View File

@ -341,7 +341,7 @@ int iso_obtain_msgs(char *minimum_severity, int *error_code, int *imgid,
int iso_msgs_submit(int error_code, char msg_text[], int os_errno,
char severity[], int origin)
{
int ret, sevno, global_index = -1;
int ret, sevno;
ret = libiso_msgs__text_to_sev(severity, &sevno, 0);
if (ret <= 0)
@ -416,3 +416,13 @@ int iso_error_get_code(int e)
{
return ISO_ERR_CODE(e);
}
/* ts A80222 */
int iso_report_errfile(char *path, int error_code, int os_errno, int flag)
{
libiso_msgs_submit(libiso_msgr, 0, error_code,
LIBISO_MSGS_SEV_ERRFILE, LIBISO_MSGS_PRIO_HIGH,
path, os_errno, 0);
return(1);
}

View File

@ -37,4 +37,13 @@ void iso_msg_debug(int imgid, const char *fmt, ...);
*/
int iso_msg_submit(int imgid, int errcode, int causedby, const char *fmt, ...);
/* ts A80222 */
/* To be called with events which report incidents with individual input
files from the local filesystem. Not with image nodes, files containing an
image or similar file-like objects.
*/
int iso_report_errfile(char *path, int error_code, int os_errno, int flag);
#endif /*MESSAGES_H_*/