void ug_option_entry_print_help (UgOptionEntry* entry, const char* prog_name, const char* parameter_string, const char* summary_string) { UgBuffer buffer; ug_buffer_init (&buffer, 4096); buffer.more = buffer_more; ug_buffer_write (&buffer, "\n" "Usage:\n ", -1); ug_buffer_write (&buffer, prog_name, -1); ug_buffer_write (&buffer, " [OPTION...] ", -1); ug_buffer_write (&buffer, parameter_string, -1); ug_buffer_write (&buffer, "\n\n", -1); if (summary_string) { ug_buffer_write (&buffer, summary_string, -1); ug_buffer_write (&buffer, "\n\n", -1); } for (; entry->long_name; entry++) print_entry (&buffer, entry, 28); buffer_more (&buffer); ug_buffer_write (&buffer, "\n\n", -1); ug_buffer_clear (&buffer, TRUE); }
void buffer_read_buf(struct buffer_t *buffer, void *buf, int size) { if(!buffer) return; size = min(size, buffer_more(buffer)); memcpy(buf, &buffer->buf[buffer->readpos], size); buffer->readpos += size; }
char buffer_read_char(struct buffer_t *buffer) { if(!buffer) return 0; if(buffer_more(buffer) >= 1) return buffer->buf[buffer->readpos++]; return (char)BUF_EOB; }
uint8_t buffer_read_uint8(struct buffer_t *buffer) { if(!buffer) return 0; uint8_t val; if(buffer_more(buffer) >= 1) val = *(uint8_t*)&buffer->buf[buffer->readpos++]; else val = (uint8_t)BUF_EOB; return val; }
float buffer_read_float(struct buffer_t *buffer) { if(!buffer) return 0.0F; float val; if(buffer_more(buffer) >= 4) { val = *(float*)&buffer->buf[buffer->readpos]; buffer->readpos += 4; } else val = 0.0f; return val; }
int buffer_read_int(struct buffer_t *buffer) { if(!buffer) return 0; int val; if(buffer_more(buffer) >= 4) { val = *(int*)&buffer->buf[buffer->readpos]; buffer->readpos += 4; } else val = (int)BUF_EOB; return val; }
uint16_t buffer_read_uint16(struct buffer_t *buffer) { if(!buffer) return 0; uint16_t val; if(buffer_more(buffer) >= 2) { val = *(uint16_t*)&buffer->buf[buffer->readpos]; buffer->readpos += 2; } else val = (uint16_t)BUF_EOB; return val; }
double buffer_read_double(struct buffer_t *buffer) { if(!buffer) return 0; double val; if(buffer_more(buffer) >= 8) { val = *(double*)&buffer->buf[buffer->readpos]; buffer->readpos += 8; } else val = (double)BUF_EOB; return val; }
struct string_t *buffer_read_string(struct buffer_t *buffer) { if(!buffer) return NULL; struct string_t *s = new_string(); while(buffer_more(buffer)) { char c = buffer->buf[buffer->readpos++]; if(c == 0) break; string_cat_char(s, c); } return s; }