Changeset 180 for libyaml/trunk/src/api.c
- Timestamp:
- 05/29/06 16:08:09 (7 years ago)
- File:
-
- 1 edited
-
libyaml/trunk/src/api.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libyaml/trunk/src/api.c
r179 r180 47 47 yaml_parser_t *parser; 48 48 49 /* Allocate the parser structure. */ 50 49 51 parser = yaml_malloc(sizeof(yaml_parser_t)); 50 52 if (!parser) return NULL; 51 53 52 54 memset(parser, 0, sizeof(yaml_parser_t)); 55 56 /* Allocate the raw buffer. */ 57 58 parser->raw_buffer = yaml_malloc(YAML_RAW_BUFFER_SIZE); 59 if (!parser->raw_buffer) { 60 yaml_free(parser); 61 return NULL; 62 } 63 parser->raw_pointer = parser->raw_buffer; 64 parser->raw_unread = 0; 65 66 /* Allocate the character buffer. */ 67 68 parser->buffer = yaml_malloc(YAML_BUFFER_SIZE); 69 if (!parser->buffer) { 70 yaml_free(parser->raw_buffer); 71 yaml_free(parser); 72 return NULL; 73 } 74 parser->buffer_end = parser->buffer; 75 parser->pointer = parser->buffer; 76 parser->unread = 0; 53 77 54 78 return parser; … … 65 89 66 90 yaml_free(parser->buffer); 67 if (!parser->raw_buffer_foreign) 68 yaml_free(parser->raw_buffer); 91 yaml_free(parser->raw_buffer); 69 92 70 93 memset(parser, 0, sizeof(yaml_parser_t)); … … 74 97 75 98 /* 76 * String read handler (always returns error).99 * String read handler. 77 100 */ 78 101 … … 81 104 size_t *size_read) 82 105 { 83 *size_read = 0; 106 yaml_string_input_t *input = data; 107 108 if (input->current == input->end) { 109 *size_read = 0; 110 return 1; 111 } 112 113 if (size > (input->end - input->current)) { 114 size = input->end - input->current; 115 } 116 117 memcpy(buffer, input->current, size); 118 input->current += size; 119 *size_read = size; 84 120 return 1; 85 121 } … … 93 129 size_t *size_read) 94 130 { 95 *size_read = fread(buffer, 1, size, (FILE *) ext);96 return !ferror((FILE *) ext);131 *size_read = fread(buffer, 1, size, (FILE *)data); 132 return !ferror((FILE *)data); 97 133 } 98 134 … … 106 142 { 107 143 assert(parser); /* Non-NULL parser object expected. */ 108 assert(!parser->read er);/* You can set the source only once. */144 assert(!parser->read_handler); /* You can set the source only once. */ 109 145 assert(input); /* Non-NULL input string expected. */ 110 146 147 parser->string_input.start = input; 148 parser->string_input.current = input; 149 parser->string_input.end = input+size; 150 111 151 parser->read_handler = yaml_string_read_handler; 112 parser->read_handler_data = NULL; 113 114 /* We use the input string as a raw (undecoded) buffer. */ 115 parser->raw_buffer = input; 116 parser->raw_buffer_size = size; 117 parser->raw_buffer_foreign = 1; 152 parser->read_handler_data = &parser->string_input; 118 153 } 119 154 … … 126 161 { 127 162 assert(parser); /* Non-NULL parser object expected. */ 128 assert(!parser->read er);/* You can set the source only once. */163 assert(!parser->read_handler); /* You can set the source only once. */ 129 164 assert(file); /* Non-NULL file object expected. */ 130 165 … … 142 177 { 143 178 assert(parser); /* Non-NULL parser object expected. */ 144 assert(!parser->read er);/* You can set the source only once. */179 assert(!parser->read_handler); /* You can set the source only once. */ 145 180 assert(handler); /* Non-NULL read handler expected. */ 146 181 147 182 parser->read_handler = handler; 148 parser->read_handler_data = data 183 parser->read_handler_data = data; 149 184 } 150 185
Note: See TracChangeset
for help on using the changeset viewer.
