📄 libewf_header_values.c
字号:
} if( date_element_count != 6 ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header_value: unsupported amount of date elements in header value.\n" ); libewf_common_free( date_string ); libewf_string_split_values_free( date_elements, date_element_count ); return( NULL ); } /* Set first value */ if( date_format == LIBEWF_DATE_FORMAT_MONTHDAY ) { if( libewf_date_string_set_month( &date_string[ date_string_iterator ], date_elements ) == -1 ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header_value: unable to set month value.\n" ); libewf_common_free( date_string ); libewf_string_split_values_free( date_elements, date_element_count ); return( NULL ); } date_string_iterator += 2; } else if( date_format == LIBEWF_DATE_FORMAT_DAYMONTH ) { if( libewf_date_string_set_day_of_month( &date_string[ date_string_iterator ], date_elements ) == -1 ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header_value: unable to set day of the month value.\n" ); libewf_common_free( date_string ); libewf_string_split_values_free( date_elements, date_element_count ); return( NULL ); } date_string_iterator += 2; } else if( date_format == LIBEWF_DATE_FORMAT_ISO8601 ) { if( libewf_date_string_set_year( &date_string[ date_string_iterator ], date_elements ) == -1 ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header_value: unable to set year value.\n" ); libewf_common_free( date_string ); libewf_string_split_values_free( date_elements, date_element_count ); return( NULL ); } date_string_iterator += 4; } /* Set first seperator */ if( ( date_format == LIBEWF_DATE_FORMAT_DAYMONTH ) || ( date_format == LIBEWF_DATE_FORMAT_MONTHDAY ) ) { date_string[ date_string_iterator ] = '/'; date_string_iterator++; } else if( date_format == LIBEWF_DATE_FORMAT_ISO8601 ) { date_string[ date_string_iterator ] = '-'; date_string_iterator++; } /* Set second value */ if( date_format == LIBEWF_DATE_FORMAT_MONTHDAY ) { if( libewf_date_string_set_day_of_month( &date_string[ date_string_iterator ], date_elements ) == -1 ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header_value: unable to set day of the month value.\n" ); libewf_common_free( date_string ); libewf_string_split_values_free( date_elements, date_element_count ); return( NULL ); } date_string_iterator += 2; } else if( ( date_format == LIBEWF_DATE_FORMAT_DAYMONTH ) || ( date_format == LIBEWF_DATE_FORMAT_ISO8601 ) ) { if( libewf_date_string_set_month( &date_string[ date_string_iterator ], date_elements ) == -1 ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header_value: unable to set month value.\n" ); libewf_common_free( date_string ); libewf_string_split_values_free( date_elements, date_element_count ); return( NULL ); } date_string_iterator += 2; } /* Set second seperator */ if( ( date_format == LIBEWF_DATE_FORMAT_DAYMONTH ) || ( date_format == LIBEWF_DATE_FORMAT_MONTHDAY ) ) { date_string[ date_string_iterator ] = '/'; date_string_iterator++; } else if( date_format == LIBEWF_DATE_FORMAT_ISO8601 ) { date_string[ date_string_iterator ] = '-'; date_string_iterator++; } /* Set third value */ if( ( date_format == LIBEWF_DATE_FORMAT_DAYMONTH ) || ( date_format == LIBEWF_DATE_FORMAT_MONTHDAY ) ) { if( libewf_date_string_set_year( &date_string[ date_string_iterator ], date_elements ) == -1 ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header_value: unable to set year value.\n" ); libewf_common_free( date_string ); libewf_string_split_values_free( date_elements, date_element_count ); return( NULL ); } date_string_iterator += 4; } else if( date_format == LIBEWF_DATE_FORMAT_ISO8601 ) { if( libewf_date_string_set_day_of_month( &date_string[ date_string_iterator ], date_elements ) == -1 ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header_value: unable to set day of the month value.\n" ); libewf_common_free( date_string ); libewf_string_split_values_free( date_elements, date_element_count ); return( NULL ); } date_string_iterator += 2; } /* Set third seperator */ if( ( date_format == LIBEWF_DATE_FORMAT_DAYMONTH ) || ( date_format == LIBEWF_DATE_FORMAT_MONTHDAY ) ) { date_string[ date_string_iterator ] = ' '; date_string_iterator++; } else if( date_format == LIBEWF_DATE_FORMAT_ISO8601 ) { date_string[ date_string_iterator ] = 'T'; date_string_iterator++; } /* Set fourth value */ if( libewf_date_string_set_hours( &date_string[ date_string_iterator ], date_elements ) == -1 ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header_value: unable to set hours value.\n" ); libewf_common_free( date_string ); libewf_string_split_values_free( date_elements, date_element_count ); return( NULL ); } date_string_iterator += 2; /* Set fourth seperator */ date_string[ date_string_iterator ] = ':'; date_string_iterator++; /* Set fifth value */ if( libewf_date_string_set_minutes( &date_string[ date_string_iterator ], date_elements ) == -1 ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header_value: unable to set minutes value.\n" ); libewf_common_free( date_string ); libewf_string_split_values_free( date_elements, date_element_count ); return( NULL ); } date_string_iterator += 2; /* Set fifth seperator */ date_string[ date_string_iterator ] = ':'; date_string_iterator++; /* Set sixth value */ if( libewf_date_string_set_seconds( &date_string[ date_string_iterator ], date_elements ) == -1 ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header_value: unable to set seconds value.\n" ); libewf_common_free( date_string ); libewf_string_split_values_free( date_elements, date_element_count ); return( NULL ); } date_string_iterator += 2; date_string[ date_string_iterator ] = (LIBEWF_CHAR) '\0'; libewf_string_split_values_free( date_elements, date_element_count ); return( date_string );}/* Generate date string within a header value * Returns a pointer to the new instance, NULL on error */LIBEWF_CHAR *libewf_generate_date_header_value( time_t timestamp ){ LIBEWF_CHAR *date_string = NULL; struct tm *time_elements = NULL; time_elements = libewf_common_localtime( ×tamp ); if( time_elements == NULL ) { LIBEWF_WARNING_PRINT( "libewf_generate_date_header_value: unable to create time elements.\n" ); return( NULL ); } date_string = (LIBEWF_CHAR *) libewf_common_alloc( LIBEWF_CHAR_SIZE * 20 ); if( date_string == NULL ) { LIBEWF_WARNING_PRINT( "libewf_generate_date_header_value: unable to create date string.\n" ); libewf_common_free( time_elements ); return( NULL ); } if( libewf_string_snprintf( date_string, 20, _S_LIBEWF_CHAR( "%4d %d %d %d %d %d" ), ( time_elements->tm_year + 1900 ), ( time_elements->tm_mon + 1 ), time_elements->tm_mday, time_elements->tm_hour, time_elements->tm_min, time_elements->tm_sec ) <= -1 ) { LIBEWF_WARNING_PRINT( "libewf_generate_date_header_value: unable to fill date string.\n" ); libewf_common_free( date_string ); libewf_common_free( time_elements ); return( NULL ); } /* Make sure the string is terminated correctly */ date_string[ 19 ] = (LIBEWF_CHAR) '\0'; libewf_common_free( time_elements ); return( date_string );}/* Convert date string within a header2 value * Returns a pointer to the new instance, NULL on error */LIBEWF_CHAR *libewf_convert_date_header2_value( LIBEWF_CHAR *header_value, uint8_t date_format ){ struct tm *time_elements = NULL; LIBEWF_CHAR *date_string = NULL; time_t timestamp = 0; if( header_value == NULL ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header2_value: invalid header value.\n" ); return( NULL ); } if( ( date_format != LIBEWF_DATE_FORMAT_DAYMONTH ) && ( date_format != LIBEWF_DATE_FORMAT_MONTHDAY ) && ( date_format != LIBEWF_DATE_FORMAT_ISO8601 ) ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header2_value: unsupported date format.\n" ); return( NULL ); } timestamp = libewf_string_to_int64( header_value, libewf_string_length( header_value ) ); time_elements = libewf_common_localtime( ×tamp ); if( time_elements == NULL ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header2_value: unable to create time elements.\n" ); return( NULL ); } date_string = (LIBEWF_CHAR *) libewf_common_alloc( LIBEWF_CHAR_SIZE * 20 ); if( date_string == NULL ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header2_value: unable to create date string.\n" ); libewf_common_free( time_elements ); return( NULL ); } if( date_format == LIBEWF_DATE_FORMAT_MONTHDAY ) { if( libewf_string_snprintf( date_string, 20, _S_LIBEWF_CHAR( "%02d/%02d/%04d %02d:%02d:%02d" ), ( time_elements->tm_mon + 1 ), time_elements->tm_mday, ( time_elements->tm_year + 1900 ), time_elements->tm_hour, time_elements->tm_min, time_elements->tm_sec ) <= -1 ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header2_value: unable to fill date string.\n" ); libewf_common_free( time_elements ); libewf_common_free( date_string ); return( NULL ); } } else if( date_format == LIBEWF_DATE_FORMAT_DAYMONTH ) { if( libewf_string_snprintf( date_string, 20, _S_LIBEWF_CHAR( "%02d/%02d/%04d %02d:%02d:%02d" ), time_elements->tm_mday, ( time_elements->tm_mon + 1 ), ( time_elements->tm_year + 1900 ), time_elements->tm_hour, time_elements->tm_min, time_elements->tm_sec ) <= -1 ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header2_value: unable to fill date string.\n" ); libewf_common_free( time_elements ); libewf_common_free( date_string ); return( NULL ); } } else if( date_format == LIBEWF_DATE_FORMAT_ISO8601 ) { if( libewf_string_snprintf( date_string, 20, _S_LIBEWF_CHAR( "%04d-%02d-%02dT%02d:%02d:%02d" ), ( time_elements->tm_year + 1900 ), ( time_elements->tm_mon + 1 ), time_elements->tm_mday, time_elements->tm_hour, time_elements->tm_min, time_elements->tm_sec ) <= -1 ) { LIBEWF_WARNING_PRINT( "libewf_convert_date_header2_value: unable to fill date string.\n" ); libewf_common_free( time_elements ); libewf_common_free( date_string ); return( NULL ); } } libewf_common_free( time_elements ); return( date_string );}/* Generate date string within a header2 value * Returns a pointer to the new instance, NULL on error */LIBEWF_CHAR *libewf_generate_date_header2_value( time_t timestamp ){ LIBEWF_CHAR *date_string = NULL; date_string = (LIBEWF_CHAR *) libewf_common_alloc( LIBEWF_CHAR_SIZE * 11 ); if( date_string == NULL ) { LIBEWF_WARNING_PRINT( "libewf_generate_date_header2_value: unable to create date string.\n" ); return( NULL ); } if( libewf_string_snprintf( date_string, 11, _S_LIBEWF_CHAR( "%" ) _S_LIBEWF_CHAR( PRIu32 ), (uint32_t) timestamp ) <= -1 ) { LIBEWF_WARNING_PRINT( "libewf_generate_date_header2_value: unable to create date string.\n" ); libewf_common_free( date_string ); return( NULL ); } /* Make sure the string is terminated correctly */ date_string[ 10 ] = (LIBEWF_CHAR) '\0'; return( date_string );}/* Retrieves the header value index number, or -1 on error * The index number will be larger than the amount when the identifier is not present in the header values */int32_t libewf_header_values_get_index( LIBEWF_HEADER_VALUES *header_values, LIBEWF_CHAR *identifier ){ size_t identifier_length = 0; size_t string_length = 0; int32_t iterator = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -