term.c (17141) | term.c (26926) |
---|---|
1/*- 2 * Copyright (c) 1992, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Christos Zoulas of Cornell University. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 280 unchanged lines hidden (view full) --- 289 clen = strlen(cap); 290 291 tlen = *str == NULL ? 0 : strlen(*str); 292 293 /* 294 * New string is shorter; no need to allocate space 295 */ 296 if (clen <= tlen) { | 1/*- 2 * Copyright (c) 1992, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Christos Zoulas of Cornell University. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 280 unchanged lines hidden (view full) --- 289 clen = strlen(cap); 290 291 tlen = *str == NULL ? 0 : strlen(*str); 292 293 /* 294 * New string is shorter; no need to allocate space 295 */ 296 if (clen <= tlen) { |
297 (void) strcpy(*str, cap); | 297 (void)strcpy(*str, cap); /* XXX strcpy is safe */ |
298 return; 299 } 300 301 /* 302 * New string is longer; see if we have enough space to append 303 */ 304 if (el->el_term.t_loc + 3 < TC_BUFSIZE) { | 298 return; 299 } 300 301 /* 302 * New string is longer; see if we have enough space to append 303 */ 304 if (el->el_term.t_loc + 3 < TC_BUFSIZE) { |
305 (void) strcpy(*str = &el->el_term.t_buf[el->el_term.t_loc], cap); | 305 /* XXX strcpy is safe */ 306 (void)strcpy(*str = &el->el_term.t_buf[el->el_term.t_loc], cap); |
306 el->el_term.t_loc += clen + 1; /* one for \0 */ 307 return; 308 } 309 310 /* 311 * Compact our buffer; no need to check compaction, cause we know it 312 * fits... 313 */ --- 7 unchanged lines hidden (view full) --- 321 termbuf[tlen++] = '\0'; 322 } 323 memcpy(el->el_term.t_buf, termbuf, TC_BUFSIZE); 324 el->el_term.t_loc = tlen; 325 if (el->el_term.t_loc + 3 >= TC_BUFSIZE) { 326 (void) fprintf(el->el_errfile, "Out of termcap string space.\n"); 327 return; 328 } | 307 el->el_term.t_loc += clen + 1; /* one for \0 */ 308 return; 309 } 310 311 /* 312 * Compact our buffer; no need to check compaction, cause we know it 313 * fits... 314 */ --- 7 unchanged lines hidden (view full) --- 322 termbuf[tlen++] = '\0'; 323 } 324 memcpy(el->el_term.t_buf, termbuf, TC_BUFSIZE); 325 el->el_term.t_loc = tlen; 326 if (el->el_term.t_loc + 3 >= TC_BUFSIZE) { 327 (void) fprintf(el->el_errfile, "Out of termcap string space.\n"); 328 return; 329 } |
329 (void) strcpy(*str = &el->el_term.t_buf[el->el_term.t_loc], cap); | 330 /* XXX strcpy is safe */ 331 (void)strcpy(*str = &el->el_term.t_buf[el->el_term.t_loc], cap); |
330 el->el_term.t_loc += clen + 1; /* one for \0 */ 331 return; 332} /* end term_alloc */ 333 334 335/* term_rebuffer_display(): 336 * Rebuffer the display after the screen changed size 337 */ --- 423 unchanged lines hidden (view full) --- 761 term = "dumb"; 762 763 memset(el->el_term.t_cap, 0, TC_BUFSIZE); 764 765 i = tgetent(el->el_term.t_cap, term); 766 767 if (i <= 0) { 768 if (i == -1) | 332 el->el_term.t_loc += clen + 1; /* one for \0 */ 333 return; 334} /* end term_alloc */ 335 336 337/* term_rebuffer_display(): 338 * Rebuffer the display after the screen changed size 339 */ --- 423 unchanged lines hidden (view full) --- 763 term = "dumb"; 764 765 memset(el->el_term.t_cap, 0, TC_BUFSIZE); 766 767 i = tgetent(el->el_term.t_cap, term); 768 769 if (i <= 0) { 770 if (i == -1) |
769#ifdef __FreeBSD__ 770 (void) fprintf(el->el_errfile, "Cannot open /usr/share/misc/termcap.\n"); 771#else 772 (void) fprintf(el->el_errfile, "Cannot open /etc/termcap.\n"); 773#endif | 771 (void) fprintf(el->el_errfile, "Cannot read termcap database;\n"); |
774 else if (i == 0) 775 (void) fprintf(el->el_errfile, | 772 else if (i == 0) 773 (void) fprintf(el->el_errfile, |
776 "No entry for terminal type \"%s\"\n", term); | 774 "No entry for terminal type \"%s\";\n", term); |
777 (void) fprintf(el->el_errfile, "using dumb terminal settings.\n"); 778 Val(T_co) = 80; /* do a dumb terminal */ 779 Val(T_pt) = Val(T_km) = Val(T_li) = 0; 780 Val(T_xt) = Val(T_MT); 781 for (t = tstr; t->name != NULL; t++) 782 term_alloc(el, t, NULL); 783 } 784 else { --- 19 unchanged lines hidden (view full) --- 804 el->el_term.t_size.h = Val(T_li); 805 806 term_setflags(el); 807 808 (void) term_get_size(el, &lins, &cols);/* get the correct window size */ 809 term_change_size(el, lins, cols); 810 (void) sigprocmask(SIG_SETMASK, &oset, NULL); 811 term_bind_arrow(el); | 775 (void) fprintf(el->el_errfile, "using dumb terminal settings.\n"); 776 Val(T_co) = 80; /* do a dumb terminal */ 777 Val(T_pt) = Val(T_km) = Val(T_li) = 0; 778 Val(T_xt) = Val(T_MT); 779 for (t = tstr; t->name != NULL; t++) 780 term_alloc(el, t, NULL); 781 } 782 else { --- 19 unchanged lines hidden (view full) --- 802 el->el_term.t_size.h = Val(T_li); 803 804 term_setflags(el); 805 806 (void) term_get_size(el, &lins, &cols);/* get the correct window size */ 807 term_change_size(el, lins, cols); 808 (void) sigprocmask(SIG_SETMASK, &oset, NULL); 809 term_bind_arrow(el); |
812 return 0; | 810 return i <= 0 ? -1 : 0; |
813} /* end term_set */ 814 815 816/* term_get_size(): 817 * Return the new window size in lines and cols, and 818 * true if the size was changed. 819 */ 820protected int --- 560 unchanged lines hidden --- | 811} /* end term_set */ 812 813 814/* term_get_size(): 815 * Return the new window size in lines and cols, and 816 * true if the size was changed. 817 */ 818protected int --- 560 unchanged lines hidden --- |