Patch 155-blob from Nirgal Vourgère

This commit is contained in:
Brian Bruns 2010-06-17 22:12:44 -04:00
parent 4fb8786418
commit 7a073df76e
4 changed files with 12 additions and 5 deletions

View File

@ -70,7 +70,7 @@ enum {
MDB_MODULE, MDB_MODULE,
MDB_RELATIONSHIP, MDB_RELATIONSHIP,
MDB_UNKNOWN_09, MDB_UNKNOWN_09,
MDB_UNKNOWN_0A, MDB_UNKNOWN_0A, /* User access */
MDB_DATABASE_PROPERTY, MDB_DATABASE_PROPERTY,
MDB_ANY = -1 MDB_ANY = -1
}; };
@ -83,6 +83,7 @@ enum {
MDB_FLOAT = 0x06, MDB_FLOAT = 0x06,
MDB_DOUBLE = 0x07, MDB_DOUBLE = 0x07,
MDB_SDATETIME = 0x08, MDB_SDATETIME = 0x08,
MDB_BINARY = 0x09,
MDB_TEXT = 0x0a, MDB_TEXT = 0x0a,
MDB_OLE = 0x0b, MDB_OLE = 0x0b,
MDB_MEMO = 0x0c, MDB_MEMO = 0x0c,

View File

@ -48,7 +48,7 @@ static MdbBackendType mdb_access_types[] = {
MdbBackendType_STRUCT_ELEMENT("Single", 0,0,0), MdbBackendType_STRUCT_ELEMENT("Single", 0,0,0),
MdbBackendType_STRUCT_ELEMENT("Double", 0,0,0), MdbBackendType_STRUCT_ELEMENT("Double", 0,0,0),
MdbBackendType_STRUCT_ELEMENT("DateTime (Short)", 0,0,1), MdbBackendType_STRUCT_ELEMENT("DateTime (Short)", 0,0,1),
MdbBackendType_STRUCT_ELEMENT("Unknown 0x09", 0,0,0), MdbBackendType_STRUCT_ELEMENT("Binary", 0,0,0),
MdbBackendType_STRUCT_ELEMENT("Text", 1,0,1), MdbBackendType_STRUCT_ELEMENT("Text", 1,0,1),
MdbBackendType_STRUCT_ELEMENT("OLE", 1,0,1), MdbBackendType_STRUCT_ELEMENT("OLE", 1,0,1),
MdbBackendType_STRUCT_ELEMENT("Memo/Hyperlink",1,0,1), MdbBackendType_STRUCT_ELEMENT("Memo/Hyperlink",1,0,1),

View File

@ -847,6 +847,7 @@ char *mdb_col_to_string(MdbHandle *mdb, void *buf, int start, int datatype, int
DBL_DIG - floor_log10(td,0) - 1, td); DBL_DIG - floor_log10(td,0) - 1, td);
trim_trailing_zeros(text); trim_trailing_zeros(text);
break; break;
case MDB_BINARY:
case MDB_TEXT: case MDB_TEXT:
if (size<0) { if (size<0) {
text = g_strdup(""); text = g_strdup("");
@ -935,6 +936,9 @@ int mdb_col_fixed_size(MdbColumn *col)
case MDB_SDATETIME: case MDB_SDATETIME:
return 4; return 4;
break; break;
case MDB_BINARY:
return -1;
break;
case MDB_MEMO: case MDB_MEMO:
return -1; return -1;
break; break;

View File

@ -26,7 +26,7 @@
#undef MDB_BIND_SIZE #undef MDB_BIND_SIZE
#define MDB_BIND_SIZE 200000 #define MDB_BIND_SIZE 200000
#define is_text_type(x) (x==MDB_TEXT || x==MDB_MEMO || x==MDB_SDATETIME) #define is_text_type(x) (x==MDB_TEXT || x==MDB_MEMO || x==MDB_SDATETIME || x==MDB_BINARY)
static char *sanitize_name(char *str, int sanitize); static char *sanitize_name(char *str, int sanitize);
static char *escapes(char *s); static char *escapes(char *s);
@ -39,8 +39,10 @@ print_col(gchar *col_val, int quote_text, int col_type, char *quote_char, char *
if (quote_text && is_text_type(col_type)) { if (quote_text && is_text_type(col_type)) {
fprintf(stdout,quote_char); fprintf(stdout,quote_char);
for (s=col_val;*s;s++) { for (s=col_val;*s;s++) {
if (strlen(quote_char)==1 && *s==quote_char[0]) { if (col_type == MDB_BINARY)
/* double the char if no escape char passed */ fprintf(stdout, "\\%03o", (unsigned char)*s);
else if (strlen(quote_char)==1 && *s==quote_char[0]) {
/* double the char if no escape char passed */
if (!escape_char) { if (!escape_char) {
fprintf(stdout,"%s%s",quote_char,quote_char); fprintf(stdout,"%s%s",quote_char,quote_char);
} else { } else {