Lines Matching refs:obj
34 DIALOG_CALLBACK obj; member
53 lseek_obj(MY_OBJ * obj, long offset, int mode) in lseek_obj() argument
56 if ((fpos = (long) lseek(obj->fd, (off_t) offset, mode)) == -1) { in lseek_obj()
74 ftell_obj(MY_OBJ * obj) in ftell_obj() argument
76 return lseek_obj(obj, 0L, SEEK_CUR); in ftell_obj()
80 lseek_set(MY_OBJ * obj, long offset) in lseek_set() argument
82 long actual = lseek_obj(obj, offset, SEEK_SET); in lseek_set()
91 lseek_end(MY_OBJ * obj, long offset) in lseek_end() argument
93 long actual = lseek_obj(obj, offset, SEEK_END); in lseek_end()
96 obj->file_size = actual; in lseek_end()
101 lseek_cur(MY_OBJ * obj, long offset) in lseek_cur() argument
103 long actual = lseek_obj(obj, offset, SEEK_CUR); in lseek_cur()
128 read_high(MY_OBJ * obj, size_t size_read) in read_high() argument
137 if ((obj->fd_bytes_read = read(obj->fd, buftab, size_read)) != -1) { in read_high()
139 buftab[obj->fd_bytes_read] = '\0'; /* mark end of valid data */ in read_high()
144 obj->bytes_read = begin_line = 0; in read_high()
145 for (j = 0; j < obj->fd_bytes_read; j++) in read_high()
147 obj->bytes_read += dialog_state.tab_len in read_high()
148 - ((obj->bytes_read - begin_line) in read_high()
151 obj->bytes_read++; in read_high()
152 begin_line = obj->bytes_read; in read_high()
154 obj->bytes_read++; in read_high()
156 if (obj->bytes_read > obj->buffer_len) { in read_high()
157 if (obj->buffer_first) in read_high()
158 obj->buffer_first = FALSE; /* disp = 0 */ in read_high()
160 free(obj->buf); in read_high()
163 obj->buffer_len = obj->bytes_read; in read_high()
166 obj->buf = xalloc((size_t) obj->buffer_len + 1); in read_high()
170 if (obj->buffer_first) { in read_high()
171 obj->buffer_first = FALSE; in read_high()
174 obj->buf = xalloc(size_read + 1); in read_high()
177 obj->bytes_read = obj->fd_bytes_read; in read_high()
182 while (j < obj->fd_bytes_read) in read_high()
187 obj->buf[i++] = ' '; in read_high()
191 obj->buf[i++] = ch; in read_high()
194 obj->buf[i] = '\0'; /* mark end of valid data */ in read_high()
197 if (obj->bytes_read == -1) in read_high()
203 find_first(MY_OBJ * obj, char *buffer, long length) in find_first() argument
205 long recount = obj->page_length; in find_first()
221 tabize(MY_OBJ * obj, long val, long *first_pos) in tabize() argument
230 fpos = ftell_obj(obj); in tabize()
232 lseek_set(obj, fpos - obj->fd_bytes_read); in tabize()
237 if ((read(obj->fd, buftab, (size_t) val)) == -1) in tabize()
246 *first_pos = find_first(obj, buftab, i); in tabize()
259 lseek_set(obj, fpos); in tabize()
269 get_line(MY_OBJ * obj) in get_line() argument
274 obj->end_reached = FALSE; in get_line()
275 while (obj->buf[obj->in_buf] != '\n') { in get_line()
276 if (obj->buf[obj->in_buf] == '\0') { /* Either end of file or end of buffer reached */ in get_line()
277 fpos = ftell_obj(obj); in get_line()
279 if (fpos < obj->file_size) { /* Not end of file yet */ in get_line()
283 read_high(obj, BUF_SIZE); in get_line()
284 obj->in_buf = 0; in get_line()
286 if (!obj->end_reached) in get_line()
287 obj->end_reached = TRUE; in get_line()
291 obj->line[i++] = obj->buf[obj->in_buf++]; in get_line()
294 obj->line[i++] = '\0'; in get_line()
295 obj->in_buf++; in get_line()
299 obj->line[i] = '\0'; in get_line()
300 if (!obj->end_reached) in get_line()
301 obj->in_buf++; /* move past '\n' */ in get_line()
303 return obj->line; in get_line()
307 match_string(MY_OBJ * obj, char *string) in match_string() argument
309 char *match = get_line(obj); in match_string()
318 back_lines(MY_OBJ * obj, long n) in back_lines() argument
324 obj->begin_reached = FALSE; in back_lines()
329 if (!obj->end_reached) { in back_lines()
332 if (obj->in_buf == 0) { in back_lines()
333 fpos = ftell_obj(obj); in back_lines()
335 if (fpos > obj->fd_bytes_read) { /* Not beginning of file yet */ in back_lines()
342 if (fpos < BUF_SIZE / 2 + obj->fd_bytes_read) { in back_lines()
344 lseek_set(obj, 0L); in back_lines()
345 val_to_tabize = fpos - obj->fd_bytes_read; in back_lines()
347 lseek_cur(obj, -(BUF_SIZE / 2 + obj->fd_bytes_read)); in back_lines()
350 read_high(obj, BUF_SIZE); in back_lines()
352 obj->in_buf = tabize(obj, val_to_tabize, (long *) 0); in back_lines()
355 obj->begin_reached = TRUE; in back_lines()
359 obj->in_buf--; in back_lines()
360 if (obj->buf[obj->in_buf] != '\n') in back_lines()
368 if (obj->in_buf == 0) { in back_lines()
369 fpos = ftell_obj(obj); in back_lines()
371 if (fpos > obj->fd_bytes_read) { in back_lines()
373 if (fpos < BUF_SIZE / 2 + obj->fd_bytes_read) { in back_lines()
375 lseek_set(obj, 0L); in back_lines()
376 val_to_tabize = fpos - obj->fd_bytes_read; in back_lines()
378 lseek_cur(obj, -(BUF_SIZE / 2 + obj->fd_bytes_read)); in back_lines()
381 read_high(obj, BUF_SIZE); in back_lines()
383 obj->in_buf = tabize(obj, val_to_tabize, (long *) 0); in back_lines()
386 obj->begin_reached = TRUE; in back_lines()
390 } while (obj->buf[--(obj->in_buf)] != '\n'); in back_lines()
392 obj->in_buf++; in back_lines()
399 print_line(MY_OBJ * obj, int row, int width) in print_line() argument
401 if (wmove(obj->text, row, 0) != ERR) { in print_line()
403 char *line = get_line(obj); in print_line()
410 if (width > getmaxx(obj->text)) in print_line()
411 width = getmaxx(obj->text); in print_line()
414 for (i = 0; i <= limit && cols[i] < obj->hscroll; ++i) in print_line()
420 (void) waddch(obj->text, ' '); in print_line()
421 (void) waddnstr(obj->text, line + indx[first], indx[last] - indx[first]); in print_line()
423 getyx(obj->text, y, x); in print_line()
426 (void) waddch(obj->text, ' '); in print_line()
436 print_page(MY_OBJ * obj, int height, int width) in print_page() argument
440 obj->page_length = 0; in print_page()
442 print_line(obj, i, width); in print_page()
444 obj->page_length++; in print_page()
445 if (obj->end_reached && !passed_end) in print_page()
448 (void) wnoutrefresh(obj->text); in print_page()
449 dlg_trace_win(obj->text); in print_page()
456 print_position(MY_OBJ * obj, WINDOW *win, int height, int width) in print_position() argument
462 fpos = ftell_obj(obj); in print_position()
464 size = tabize(obj, obj->in_buf, &first); in print_position()
466 first = find_first(obj, obj->buf, size = obj->in_buf); in print_position()
470 fpos - obj->fd_bytes_read + size, in print_position()
471 fpos - obj->fd_bytes_read + size, in print_position()
472 obj->file_size, in print_position()
571 perform_search(MY_OBJ * obj, int height, int width, int key, char *search_term) in perform_search() argument
583 if (dir ? !obj->end_reached : !obj->begin_reached) { in perform_search()
590 } else if ((result = get_search_term(obj->text, search_term, in perform_search()
602 (void) wattrset(obj->text, dialog_attr); in perform_search()
603 back_lines(obj, obj->page_length); in perform_search()
607 tempinx = obj->in_buf; in perform_search()
608 temp = obj->begin_reached; in perform_search()
609 temp1 = obj->end_reached; in perform_search()
610 fpos = ftell_obj(obj) - obj->fd_bytes_read; in perform_search()
613 back_lines(obj, (dir in perform_search()
614 ? obj->page_length - 1 in perform_search()
615 : obj->page_length + 1)); in perform_search()
617 while ((found = match_string(obj, search_term)) == FALSE) { in perform_search()
618 if (obj->end_reached) in perform_search()
622 while ((found = match_string(obj, search_term)) == FALSE) { in perform_search()
623 if (obj->begin_reached) in perform_search()
625 back_lines(obj, 2L); in perform_search()
631 lseek_set(obj, fpos); in perform_search()
633 read_high(obj, BUF_SIZE); in perform_search()
635 obj->in_buf = tempinx; in perform_search()
636 obj->begin_reached = temp; in perform_search()
637 obj->end_reached = temp1; in perform_search()
642 back_lines(obj, obj->page_length); in perform_search()
644 back_lines(obj, 1L); in perform_search()
647 (void) wattrset(obj->text, dialog_attr); in perform_search()
705 MY_OBJ obj; in dialog_textbox() local
714 memset(&obj, 0, sizeof(obj)); in dialog_textbox()
716 obj.begin_reached = TRUE; in dialog_textbox()
717 obj.buffer_first = TRUE; in dialog_textbox()
718 obj.end_reached = FALSE; in dialog_textbox()
719 obj.buttons = dlg_exit_label(); in dialog_textbox()
722 if ((obj.fd = open(file, O_RDONLY)) == -1) in dialog_textbox()
727 lseek_end(&obj, 0L); in dialog_textbox()
730 lseek_set(&obj, 0L); in dialog_textbox()
732 read_high(&obj, BUF_SIZE); in dialog_textbox()
734 dlg_button_layout(obj.buttons, &min_width); in dialog_textbox()
750 dlg_register_buttons(dialog, "textbox", obj.buttons); in dialog_textbox()
755 obj.text = dlg_sub_window(dialog, PAGE_LENGTH, PAGE_WIDTH, y + 1, x + 1); in dialog_textbox()
763 dlg_draw_buttons(dialog, PAGE_LENGTH + 2, 0, obj.buttons, button, FALSE, width); in dialog_textbox()
767 dlg_attr_clear(obj.text, PAGE_LENGTH, PAGE_WIDTH, dialog_attr); in dialog_textbox()
777 (void) scrollok(obj.text, TRUE); in dialog_textbox()
778 (void) scroll(obj.text); /* Scroll text region up one line */ in dialog_textbox()
779 (void) scrollok(obj.text, FALSE); in dialog_textbox()
780 print_line(&obj, PAGE_LENGTH - 1, PAGE_WIDTH); in dialog_textbox()
781 (void) wnoutrefresh(obj.text); in dialog_textbox()
790 (void) scrollok(obj.text, TRUE); in dialog_textbox()
791 (void) wscrl(obj.text, -1); /* Scroll text region down one line */ in dialog_textbox()
792 (void) scrollok(obj.text, FALSE); in dialog_textbox()
793 obj.page_length = 0; in dialog_textbox()
797 print_line(&obj, 0, PAGE_WIDTH); /* print first line of page */ in dialog_textbox()
798 (void) wnoutrefresh(obj.text); in dialog_textbox()
800 (void) get_line(&obj); /* Called to update 'end_reached' and 'in_buf' */ in dialog_textbox()
802 obj.page_length++; in dialog_textbox()
803 if (obj.end_reached && !passed_end) in dialog_textbox()
807 print_page(&obj, PAGE_LENGTH, PAGE_WIDTH); in dialog_textbox()
809 print_position(&obj, dialog, height, width); in dialog_textbox()
820 if (!fkey && (code = dlg_char_to_button(key, obj.buttons)) >= 0) { in dialog_textbox()
837 button = dlg_next_button(obj.buttons, button); in dialog_textbox()
842 obj.buttons, button, in dialog_textbox()
846 button = dlg_prev_button(obj.buttons, button); in dialog_textbox()
851 obj.buttons, button, in dialog_textbox()
861 if (!obj.begin_reached) { in dialog_textbox()
862 obj.begin_reached = 1; in dialog_textbox()
864 fpos = ftell_obj(&obj); in dialog_textbox()
866 if (fpos > obj.fd_bytes_read) { in dialog_textbox()
868 lseek_set(&obj, 0L); in dialog_textbox()
870 read_high(&obj, BUF_SIZE); in dialog_textbox()
872 obj.in_buf = 0; in dialog_textbox()
877 obj.end_reached = TRUE; in dialog_textbox()
879 fpos = ftell_obj(&obj); in dialog_textbox()
881 if (fpos < obj.file_size) { in dialog_textbox()
883 lseek_end(&obj, -BUF_SIZE); in dialog_textbox()
885 read_high(&obj, BUF_SIZE); in dialog_textbox()
887 obj.in_buf = obj.bytes_read; in dialog_textbox()
888 back_lines(&obj, (long) PAGE_LENGTH); in dialog_textbox()
892 if (!obj.begin_reached) { in dialog_textbox()
893 back_lines(&obj, obj.page_length + 1); in dialog_textbox()
900 if (!obj.begin_reached) { in dialog_textbox()
901 back_lines(&obj, obj.page_length + PAGE_LENGTH); in dialog_textbox()
906 if (!obj.end_reached) { in dialog_textbox()
907 obj.begin_reached = 0; in dialog_textbox()
914 if (!obj.end_reached) { in dialog_textbox()
915 obj.begin_reached = 0; in dialog_textbox()
920 if (obj.hscroll > 0) { in dialog_textbox()
921 obj.hscroll = 0; in dialog_textbox()
923 back_lines(&obj, obj.page_length); in dialog_textbox()
928 if (obj.hscroll > 0) { in dialog_textbox()
929 obj.hscroll--; in dialog_textbox()
931 back_lines(&obj, obj.page_length); in dialog_textbox()
936 if (obj.hscroll < MAX_LEN) { in dialog_textbox()
937 obj.hscroll++; in dialog_textbox()
939 back_lines(&obj, obj.page_length); in dialog_textbox()
948 back_lines(&obj, obj.page_length); in dialog_textbox()
963 moved = perform_search(&obj, height, width, key, search_term); in dialog_textbox()
974 free(obj.buf); in dialog_textbox()
975 (void) close(obj.fd); in dialog_textbox()