commit ytree for openSUSE:Factory
Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ytree for openSUSE:Factory checked in at 2024-06-10 17:38:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ytree (Old) and /work/SRC/openSUSE:Factory/.ytree.new.19518 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "ytree" Mon Jun 10 17:38:32 2024 rev:8 rq:1179691 version:2.09 Changes: -------- --- /work/SRC/openSUSE:Factory/ytree/ytree.changes 2024-04-10 17:50:48.717404455 +0200 +++ /work/SRC/openSUSE:Factory/.ytree.new.19518/ytree.changes 2024-06-10 17:38:51.101657393 +0200 @@ -1,0 +2,7 @@ +Fri Jun 7 11:57:51 UTC 2024 - Dirk Müller <dmueller@suse.com> + +- update to 2.09: + * Window resize support for hex-view and hex-edit + * Display format improvements + +------------------------------------------------------------------- Old: ---- ytree-2.08.tar.gz New: ---- ytree-2.09.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ytree.spec ++++++ --- /var/tmp/diff_new_pack.DReYdt/_old 2024-06-10 17:38:51.625676778 +0200 +++ /var/tmp/diff_new_pack.DReYdt/_new 2024-06-10 17:38:51.625676778 +0200 @@ -17,7 +17,7 @@ Name: ytree -Version: 2.08 +Version: 2.09 Release: 0 Summary: A filemanager similar to XTree License: GPL-2.0-only ++++++ ytree-2.08.tar.gz -> ytree-2.09.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ytree-2.08/CHANGES new/ytree-2.09/CHANGES --- old/ytree-2.08/CHANGES 2024-04-05 14:24:38.000000000 +0200 +++ new/ytree-2.09/CHANGES 2024-05-27 19:20:04.000000000 +0200 @@ -182,3 +182,7 @@ "Show tagged files only" in file windows (Shift-F4 or Ctrl-F4 (if system allows Ctrl function keys / Thanks to frank) Lots of UTF_8 improvements/bugfixes Improve compatibility with old unix systems / some minor fixes +New in 2.09 + Window resize support for hex-view and hex-edit + Display format improvements + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ytree-2.08/filewin.c new/ytree-2.09/filewin.c --- old/ytree-2.08/filewin.c 2024-04-05 14:24:38.000000000 +0200 +++ new/ytree-2.09/filewin.c 2024-05-27 19:20:04.000000000 +0200 @@ -65,6 +65,7 @@ static void RereadWindowSize(DirEntry *dir_entry); static void ListJump( DirEntry * dir_entry, char *str ); static char GetTypeOfFile(struct stat fst); +static int GetVisualFileEntryLength(int mode, int max_visual_filename_len, int max_visual_linkname_len); @@ -73,44 +74,53 @@ GetMaxYX( file_window, &window_height, &window_width ); file_mode = new_file_mode; - switch( file_mode ) + + max_column = window_width / + (GetVisualFileEntryLength( file_mode, max_visual_filename_len, max_visual_linkname_len) + 1); + + if( max_column == 0 ) + max_column = 1; +} + + +static int GetVisualFileEntryLength(int mode, int max_visual_filename_len, int max_visual_linkname_len) +{ + int len = 0; + + switch (file_mode) { - case MODE_1: if( max_visual_linkname_len) - max_column = window_width / - (max_visual_filename_len + max_visual_linkname_len + 45); - else - max_column = window_width / (max_visual_filename_len + 41); - break; - case MODE_2: if( max_visual_linkname_len) - max_column = window_width / - (max_visual_filename_len + max_visual_linkname_len + 41); - else - max_column = window_width / (max_visual_filename_len + 37); - break; - case MODE_3: max_column = window_width / (max_visual_filename_len + 3); - break; - case MODE_4: if( max_visual_linkname_len) - max_column = window_width / - (max_visual_filename_len + max_visual_linkname_len + 44); - else - max_column = window_width / (max_visual_filename_len + 40); - break; - case MODE_5: max_visual_userview_len = GetVisualUserFileEntryLength(max_visual_filename_len, - max_visual_linkname_len, - USERVIEW); - if(max_visual_userview_len) - max_column = window_width / (max_visual_userview_len + 1); - else - max_column = 0; + case MODE_1: len = (max_visual_linkname_len) ? max_visual_linkname_len + 4 : 0; /* linkname + " -> " */ + len += max_visual_filename_len + 38; /* filename + format */ +#ifdef HAS_LONGLONG + len += 4; /* %11lld instead of %7d */ +#endif + break; + + case MODE_2: len = (max_visual_linkname_len) ? max_visual_linkname_len + 4 : 0; /* linkname + " -> " */ + len += max_visual_filename_len + 40; /* filename + format */ +#ifdef HAS_LONGLONG + len += 4; /* %11lld instead of %7d */ +#endif + break; + + case MODE_3: len = max_visual_filename_len + 2; /* filename + format */ + break; + + case MODE_4: len = (max_visual_linkname_len) ? max_visual_linkname_len + 4 : 0; /* linkname + " -> " */ + len += max_visual_filename_len + 39; /* filename + format */ + break; + + case MODE_5: len = GetVisualUserFileEntryLength(max_visual_filename_len, max_visual_linkname_len, USERVIEW); + max_visual_userview_len = len; break; } - if( max_column == 0 ) - max_column = 1; + return len; } + void RotateFileMode(void) { switch( file_mode ) @@ -697,7 +707,7 @@ sym_link_name ); #else - (void) sprintf( format, "%%c%%c%%%c%ds %%8u %%-12s %%-12s -> %%-%ds", + (void) sprintf( format, "%%c%%c%%%c%ds %%8u %%-12s %%-12s -> %%-%ds", justify, filename_width, linkname_width @@ -729,7 +739,7 @@ group_name_ptr ); #else - (void) sprintf( format, "%%c%%c%%%c%ds %%8u %%-12s %%-12s", + (void) sprintf( format, "%%c%%c%%%c%ds %%8u %%-12s %%-12s", justify, filename_width ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ytree-2.08/input.c new/ytree-2.09/input.c --- old/ytree-2.08/input.c 2024-04-05 14:24:38.000000000 +0200 +++ new/ytree-2.09/input.c 2024-05-27 19:20:04.000000000 +0200 @@ -620,11 +620,11 @@ #endif -int Getch() +int WGetch(WINDOW *win) { int c; - c = getch(); + c = wgetch(win); #ifdef KEY_RESIZE if(c == KEY_RESIZE) { @@ -636,3 +636,9 @@ return(c); } + +int Getch() +{ + return(WGetch(stdscr)); +} + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ytree-2.08/patchlev.h new/ytree-2.09/patchlev.h --- old/ytree-2.08/patchlev.h 2024-04-05 14:24:38.000000000 +0200 +++ new/ytree-2.09/patchlev.h 2024-05-27 19:20:04.000000000 +0200 @@ -5,6 +5,6 @@ ***************************************************************************/ -#define VERSION "2.08" -#define PATCHLEVEL 2 -#define VERSIONDATE "05 Apr 2024" +#define VERSION "2.09" +#define PATCHLEVEL 0 +#define VERSIONDATE "27 May 2024" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ytree-2.08/util.c new/ytree-2.09/util.c --- old/ytree-2.08/util.c 2024-04-05 14:24:38.000000000 +0200 +++ new/ytree-2.09/util.c 2024-05-27 19:20:04.000000000 +0200 @@ -1092,7 +1092,11 @@ } else if(!strncmp(sptr, LINKCOUNT_VIEWNAME, 3)) { n = 3; } else if(!strncmp(sptr, FILESIZE_VIEWNAME, 3)) { +#ifdef HAS_LONGLONG + n = 11; +#else n = 7; +#endif } else if(!strncmp(sptr, MODTIME_VIEWNAME, 3)) { n = 12; } else if(!strncmp(sptr, SYMLINK_VIEWNAME, 3)) { @@ -1102,7 +1106,11 @@ } else if(!strncmp(sptr, GID_VIEWNAME, 3)) { n = 8; } else if(!strncmp(sptr, INODE_VIEWNAME, 3)) { +#ifdef HAS_LONGLONG + n = 11; +#else n = 7; +#endif } else if(!strncmp(sptr, ACCTIME_VIEWNAME, 3)) { n = 12; } else if(!strncmp(sptr, CHGTIME_VIEWNAME, 3)) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ytree-2.08/view.c new/ytree-2.09/view.c --- old/ytree-2.08/view.c 2024-04-05 14:24:38.000000000 +0200 +++ new/ytree-2.09/view.c 2024-05-27 19:20:04.000000000 +0200 @@ -25,13 +25,14 @@ static struct stat fdstat; static int WLINES, WCOLS, BYTES; static WINDOW *VIEW, *BORDER; +static BOOL resize_done = FALSE; -BOOL inhex=TRUE; -BOOL inedit=FALSE; -BOOL hexoffset=TRUE; +static BOOL inhex=TRUE; +static BOOL inedit=FALSE; +static BOOL hexoffset=TRUE; -#define CURSOR_CALC_X (10+((cursor_pos_x<(BYTES))? 2:3)+(cursor_pos_x)+(cursor_pos_x/2)) +#define CURSOR_CALC_X (10+(((cursor_pos_x/2)<(BYTES/2)) ? 2:3)+(cursor_pos_x)+(cursor_pos_x/2)) #define CURSOR_POS_X ((inhex)? CURSOR_CALC_X:(WCOLS-BYTES+cursor_pos_x)) #define C_POSX (((cursor_pos_x%2)!=1)? cursor_pos_x:(cursor_pos_x-1)) #define CURSOR_POSX ((inhex)? (C_POSX/2):cursor_pos_x) @@ -97,10 +98,10 @@ if( access( file_path, R_OK ) ) { (void) sprintf( message, - "View not possible!*\"%s\"*%s", - file_path, - strerror(errno) - ); + "View not possible!*\"%s\"*%s", + file_path, + strerror(errno) + ); MESSAGE( message ); ESCAPE; } @@ -117,8 +118,9 @@ { (void) sprintf(command_line, aux, file_p_aux); } - else - (void) sprintf(command_line, "%s %s", aux, file_p_aux); + else { + (void) sprintf(command_line, "%s %s", aux, file_p_aux); + } } else { @@ -126,51 +128,43 @@ if( compress_method == FREEZE_COMPRESS ) { (void) sprintf( command_line, - "%s < %s %s | %s", - MELT, - file_p_aux, - ERR_TO_STDOUT, - PAGER - ); - } - else if( compress_method == COMPRESS_COMPRESS ) - { - (void) sprintf( command_line, - "%s < %s %s | %s", - UNCOMPRESS, - file_p_aux, - ERR_TO_STDOUT, - PAGER - ); - } - else if( compress_method == GZIP_COMPRESS ) - { - (void) sprintf( command_line, + "%s < %s %s | %s", + MELT, + file_p_aux, + ERR_TO_STDOUT, + PAGER + ); + } else if( compress_method == COMPRESS_COMPRESS ) { + (void) sprintf( command_line, + "%s < %s %s | %s", + UNCOMPRESS, + file_p_aux, + ERR_TO_STDOUT, + PAGER + ); + } else if( compress_method == GZIP_COMPRESS ) { + (void) sprintf( command_line, "%s < %s %s | %s", - GNUUNZIP, - file_p_aux, - ERR_TO_STDOUT, - PAGER - ); - } - else if( compress_method == BZIP_COMPRESS ) - { - (void) sprintf( command_line, + GNUUNZIP, + file_p_aux, + ERR_TO_STDOUT, + PAGER + ); + } else if( compress_method == BZIP_COMPRESS ) { + (void) sprintf( command_line, "%s < %s %s | %s", - BUNZIP, - file_p_aux, - ERR_TO_STDOUT, - PAGER - ); - } - else - { - (void) sprintf( command_line, - "%s %s", - PAGER, - file_p_aux - ); - } + BUNZIP, + file_p_aux, + ERR_TO_STDOUT, + PAGER + ); + } else { + (void) sprintf( command_line, + "%s %s", + PAGER, + file_p_aux + ); + } } /* --crb3 01oct02: replicating what I did to <e>dit, eliminate @@ -181,28 +175,27 @@ if (mode == DISK_MODE) { - if (Getcwd(cwd, PATH_LENGTH) == NULL) - { - WARNING("Getcwd failed*\".\"assumed"); - (void) strcpy(cwd, "."); - } - if (chdir(GetPath(dir_entry, path))) - { - (void) sprintf(message, "Can't change directory to*\"%s\"", path); - MESSAGE(message); - }else{ - result = SystemCall(command_line); - } - if( chdir(cwd) ) - { - (void) sprintf(message, "Can't change directory to*\"%s\"", cwd); - MESSAGE(message); - } - }else{ - result = SystemCall(command_line); + if (Getcwd(cwd, PATH_LENGTH) == NULL) + { + WARNING("Getcwd failed*\".\"assumed"); + (void) strcpy(cwd, "."); + } + if (chdir(GetPath(dir_entry, path))) + { + (void) sprintf(message, "Can't change directory to*\"%s\"", path); + MESSAGE(message); + } else { + result = SystemCall(command_line); + } + if( chdir(cwd) ) + { + (void) sprintf(message, "Can't change directory to*\"%s\"", cwd); + MESSAGE(message); + } + } else { + result = SystemCall(command_line); } - /* if((result = SilentSystemCall( command_line ))) ..did systemcall just above */ if(result) { (void) sprintf( message, "can't execute*%s", command_line ); @@ -241,9 +234,9 @@ if (( aux = GetExtViewer(file_path)) != NULL) { if (strstr(aux,"%s") != NULL) { - (void) sprintf( buffer, "| %s", PAGER ); + (void) sprintf( buffer, "| %s", PAGER ); } else { - (void) sprintf( buffer, "| %s", aux ); /* maybe pipe-able */ + (void) sprintf( buffer, "| %s", aux ); /* maybe pipe-able */ } } else { (void) sprintf( buffer, "| %s", PAGER ); @@ -252,10 +245,10 @@ archive = (mode == TAPE_MODE) ? statistic.tape_name : statistic.login_path; MakeExtractCommandLine( command_line, - archive, - file_path, - buffer - ); + archive, + file_path, + buffer + ); if((result = SystemCall( command_line ))) { (void) sprintf( message, "can't execute*%s", command_line ); @@ -274,7 +267,7 @@ { dest[c]='\0'; for( ;c >= 0;c--) - dest[c] = (isprint(src[c]) ? src[c] : '.'); + dest[c] = (isprint(src[c]) ? src[c] : '.'); return dest; } */ @@ -287,8 +280,8 @@ aux = (char *) xmalloc(WCOLS ); if (r==0) { - wclrtoeol(win); - return; + wclrtoeol(win); + return; } if(hexoffset) { sprintf(line, "%010X ", (int)offset); @@ -298,37 +291,38 @@ for (i = 1; i <= r; i++ ) { if ((i == (BYTES / 2) ) || (i == BYTES )) - sprintf(aux, "%02hhX ", buf[i-1]); + sprintf(aux, "%02hhX ", buf[i-1]); else - sprintf(aux, "%02hhX ", buf[i-1]); + sprintf(aux, "%02hhX ", buf[i-1]); strcat(line, aux); } for (i = r+1; i <= BYTES; i++) { buf[i-1]= ' '; if ((i == (BYTES / 2) ) || (i == BYTES )) - sprintf(aux, " "); + sprintf(aux, " "); else - sprintf(aux, " "); + sprintf(aux, " "); strcat(line, aux); } /* strcat(line, " ");*/ line[strlen(line)] = ' '; for (i=0; i< WCOLS-BYTES; i++) - waddch(win, line[i]| THECOLOR); + waddch(win, line[i]| THECOLOR); for( i=0; i< BYTES; i++) - isprint(buf[i]) ? waddch(win, buf[i] | THECOLOR) : - waddch(win, ACS_BLOCK | COLOR_PAIR(HIDIR_COLOR)); + isprint(buf[i]) ? waddch(win, buf[i] | THECOLOR) : waddch(win, ACS_BLOCK | COLOR_PAIR(HIDIR_COLOR)); free(aux); return; } + + static void update_line(WINDOW *win, long line) { int r; char *buf; char *line_string; - char mensaje[50]; + char msg[50]; line_string = (char *) xmalloc(WCOLS); memset(line_string, ' ', WCOLS); @@ -337,10 +331,10 @@ memset(buf, ' ', BYTES); if (lseek(fd, (line - 1) * BYTES, SEEK_SET)== -1 ) { - sprintf(mensaje, "Error %ld ", line); - perror(mensaje); - fflush(stdout); - return; + sprintf(msg, "File seek failed for line: %ld: %s ", line, strerror(errno)); + ERROR_MSG(msg); + fflush(stdout); + return; } r = read(fd, buf, BYTES); printhexline(win, line_string, buf, r, (line - 1) * (BYTES)); @@ -376,8 +370,8 @@ for (i = current_line; i <= current_line + l; i++) { - wmove(win, i - current_line, 0); - update_line(win, i); + wmove(win, i - current_line, 0); + update_line(win, i); } wnoutrefresh(win); doupdate(); @@ -389,22 +383,27 @@ int i; char *str; - str = (char *)xmalloc(COLS); + str = (char *)xmalloc(WCOLS); for(i = WLINES + 4; i < LINES; i++) { - wmove(stdscr,i , 0); - wclrtoeol(stdscr); + wmove(stdscr,i , 0); + wclrtoeol(stdscr); } + doupdate(); Print( stdscr, 0, 0, "File: ", MENU_COLOR ); Print( stdscr, 0, 6, CutPathname(str,file_path,WCOLS-5), HIMENUS_COLOR ); PrintOptions( stdscr, LINES - 3, 0, "(Edit file in hexadecimal mode)"); + wclrtoeol(stdscr); PrintOptions( stdscr, LINES - 2, 0, "(Q)uit (^L) redraw (<TAB>) change edit mode"); - PrintOptions( stdscr, LINES - 1, 0, - "(NEXT)-(RIGHT)/(PREV)-(LEFT) page (HOME)-(END) of line (DOWN)-(UP) line"); + wclrtoeol(stdscr); + PrintOptions( stdscr, LINES - 1, 0, "(NEXT)-(RIGHT)/(PREV)-(LEFT) page (HOME)-(END) of line (DOWN)-(UP) line"); + wclrtoeol(stdscr); free(str); + wnoutrefresh(stdscr); + doupdate(); return; } @@ -413,37 +412,41 @@ int i; char *str; - str = (char *)xmalloc(COLS); + str = (char *)xmalloc(WCOLS); for(i = WLINES + 4; i < LINES; i++) { - wmove(stdscr,i , 0); - wclrtoeol(stdscr); + wmove(stdscr,i , 0); + wclrtoeol(stdscr); } doupdate(); Print( stdscr, 0, 0, "File: ", MENU_COLOR ); Print( stdscr, 0, 6, CutPathname(str,file_path,WCOLS-5), HIMENUS_COLOR ); - PrintOptions( stdscr, LINES - 3, 0, "View file in hexadecimal mode"); + PrintOptions( stdscr, LINES - 3, 0, "View file in hexadecimal mode"); + wclrtoeol(stdscr); PrintOptions( stdscr, LINES - 2, 0, "(Q)uit (^L) redraw (E)dit hex"); - PrintOptions( stdscr, LINES - 1, 0, - "(NEXT)-(RIGHT)/(PREV)-(LEFT) page (HOME)-(END) of line (DOWN)-(UP) line"); + wclrtoeol(stdscr); + PrintOptions( stdscr, LINES - 1, 0, "(NEXT)-(RIGHT)/(PREV)-(LEFT) page (HOME)-(END) of line (DOWN)-(UP) line"); + wclrtoeol(stdscr); free(str); + wnoutrefresh(stdscr); return; } static void SetupViewWindow(char *file_path) { int i; - char *str; + + int myCOLS = (COLS > 18) ? COLS : 19; /* to display (at least) address, frame and one byte */ + int myLINES = (LINES > 6) ? LINES : 7; /* to display (at least) footer, border and one line */ - str = (char *)xmalloc(COLS); - WLINES= LINES - 6; - WCOLS= COLS - 2; + WLINES=myLINES - 6; + WCOLS=myCOLS - 2; if (BORDER) - delwin(BORDER); + delwin(BORDER); BORDER=newwin(WLINES + 2, WCOLS + 2, 1, 0); if (VIEW) - delwin(VIEW); + delwin(VIEW); VIEW=newwin(WLINES, WCOLS, 2, 1); keypad(VIEW,TRUE); scrollok(VIEW,FALSE); @@ -454,95 +457,98 @@ wclear(VIEW); for( i = 0; i < WLINES - 1; i++) { - wmove(VIEW,i,0); - wclrtoeol(VIEW); + wmove(VIEW,i,0); + wclrtoeol(VIEW); } WbkgdSet(BORDER,COLOR_PAIR(WINDIR_COLOR)|A_BOLD); + Change2View(file_path); box(BORDER,0,0); RefreshWindow(BORDER); RefreshWindow(VIEW); - Change2View(file_path); BYTES = (WCOLS - 13) / 4; - free(str); return; - } static unsigned char hexval(unsigned char v) { - if (v >= 'a' && v <= 'f') - v = v - 'a' + 10; - else if (v >= '0' && v <= '9') - v = v - '0'; - return v; + if (v >= 'a' && v <= 'f') + v = v - 'a' + 10; + else if (v >= '0' && v <= '9') + v = v - '0'; + return v; } static void change_char(int ch) { - CHANGES *cambio=NULL; char pp=0; - char mensaje[50]; + char msg[50]; cambio = malloc(sizeof(struct MODIF)); cambio -> pos = ( (cursor_pos_y + current_line - 1) * BYTES) + CURSOR_POSX; if (lseek(fd, cambio -> pos, SEEK_SET)== -1 ) { - sprintf(mensaje,"Error %s ", strerror(errno)); - perror(mensaje); - fflush(stdout); - free(cambio); - return; - } - if ((read(fd, &cambio -> old_char,1)==1)) - - if (lseek(fd, cambio -> pos, SEEK_SET)!= -1 ) - { - if (inhex) { - switch( ch){ - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - if ((cursor_pos_x%2)==1) - pp = (cambio -> old_char & 0xF0) | (hexval(ch)); - else - pp = (cambio -> old_char & 0x0F) | (hexval(ch) << 4); - touchwin(VIEW); - break; - default: - beep(); - touchwin(VIEW); - free(cambio); - return; - break; - } - }else{ - pp = ch; - } - if (write(fd, &pp, 1)!= 1) - { - sprintf(mensaje,"Error al grabar el cambio %s ", strerror(errno)); - perror(mensaje); - fflush(stdout); - free(cambio); - return; - } - cambio -> new_char = pp; - cambio -> next = changes; - changes = cambio; - }else{ - sprintf(mensaje,"Error al posicionar %s ", strerror(errno)); - perror(mensaje); + sprintf(msg,"File seek failed: %s ", strerror(errno)); + ERROR_MSG(msg); fflush(stdout); free(cambio); return; } - else{ - sprintf(mensaje,"Error al pre-leer %s ", strerror(errno)); - perror(mensaje); + + if ((read(fd, &cambio -> old_char,1)==1)) + { + if (lseek(fd, cambio -> pos, SEEK_SET)!= -1 ) + { + if (inhex) { + + switch( ch) { + + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + + if ((cursor_pos_x%2)==1) + pp = (cambio -> old_char & 0xF0) | (hexval(ch)); + else + pp = (cambio -> old_char & 0x0F) | (hexval(ch) << 4); + touchwin(VIEW); + break; + + default: + beep(); + touchwin(VIEW); + free(cambio); + return; + break; + } + } else { + pp = ch; + } + + if (write(fd, &pp, 1) != 1) + { + sprintf(msg,"Write to file failed: %s ", strerror(errno)); + ERROR_MSG(msg); + fflush(stdout); + free(cambio); + return; + } + cambio -> new_char = pp; + cambio -> next = changes; + changes = cambio; + } else { + sprintf(msg,"File seek failed: %s ", strerror(errno)); + ERROR_MSG(msg); + fflush(stdout); + free(cambio); + return; + } + } else { + sprintf(msg,"Read from file failed: %s ", strerror(errno)); + ERROR_MSG(msg); fflush(stdout); free(cambio); return; @@ -553,51 +559,118 @@ static void move_right(WINDOW *win) { - fstat(fd,&fdstat); - cursor_pos_x++; - if (fdstat.st_size > ((cursor_pos_y+current_line-1) * BYTES + CURSOR_POSX )){ - cursor_pos_x--; - if ( cursor_pos_x < CANTX(BYTES) - 1 ) { - cursor_pos_x += 1; - wmove( win, cursor_pos_y, CURSOR_POS_X); - }else { - if (fdstat.st_size >= ((current_line+cursor_pos_y) * BYTES) ){ - if (cursor_pos_y < WLINES-1 ) { - cursor_pos_y++; - cursor_pos_x = 0; - wmove( win, cursor_pos_y, CURSOR_POS_X); - } else { - current_line++; - scroll_down(win); - cursor_pos_x = 0; - wmove( win, cursor_pos_y, CURSOR_POS_X); - } - } else - beep(); - } - }else{ - cursor_pos_x--; - beep(); + fstat(fd,&fdstat); + cursor_pos_x++; + if (fdstat.st_size > ((cursor_pos_y+current_line-1) * BYTES + CURSOR_POSX )) { + cursor_pos_x--; + if ( cursor_pos_x < CANTX(BYTES) - 1 ) { + cursor_pos_x += 1; + wmove( win, cursor_pos_y, CURSOR_POS_X); + } else { + if (fdstat.st_size >= ((current_line+cursor_pos_y) * BYTES) ) { + if (cursor_pos_y < WLINES-1 ) { + cursor_pos_y++; + cursor_pos_x = 0; + wmove( win, cursor_pos_y, CURSOR_POS_X); + } else { + current_line++; + scroll_down(win); + cursor_pos_x = 0; + wmove( win, cursor_pos_y, CURSOR_POS_X); + } + } else { + beep(); + } + } + } else { + cursor_pos_x--; + beep(); } return; } + +static void DoResize(char *file_path) +{ + int old_cursor_pos_x = cursor_pos_x; + int old_cursor_pos_y = cursor_pos_y; + int old_WLINES = WLINES; + int old_WCOLS = WCOLS; + int offset = (cursor_pos_y + current_line - 1) * BYTES + CURSOR_POSX; + int new_cols; + int new_lines; + + SetupViewWindow(file_path); + + new_cols = offset % BYTES; + new_lines = offset / BYTES; + + if(WLINES < old_WLINES) + { + if(old_cursor_pos_y >= WLINES) /* view is getting smaller (heigh) */ + { + /* current position is (now) in invisible line; "scoll down" */ + int n = old_WLINES - WLINES; + current_line += n; + cursor_pos_y -= n; + if(cursor_pos_y < 0) + { + current_line += (cursor_pos_y * -1); + cursor_pos_y = 0; + } + } + } + + if(WCOLS != old_WCOLS) + { + /* reposition x */ + cursor_pos_x = (inhex) ? (new_cols * 2 + (old_cursor_pos_x % 2)) : new_cols; + + /* reposition y */ + while((cursor_pos_y + current_line - 1) < new_lines) /* maybe view is smaller (less columns) */ + { + if(cursor_pos_y < (WLINES-1)) + cursor_pos_y++; + else + current_line++; + } + + while((cursor_pos_y + current_line - 1) > new_lines) /* maybe view is larger (more columns) */ + { + if(cursor_pos_y > 0) + cursor_pos_y--; + else + current_line--; + } + } + + + Change2Edit(file_path); + update_all_lines(VIEW,WLINES-1); + wmove( VIEW, cursor_pos_y, CURSOR_POS_X); + wnoutrefresh(VIEW); + doupdate(); + resize_done = TRUE; +} + + + static void hex_edit(char *file_path) { int ch; - char mensaje[50]; + char msg[50]; BOOL QUIT=FALSE; cursor_pos_x = cursor_pos_y = 0; fd2 = fd; fd=open(file_path,O_RDWR); - if (fd == -1){ - sprintf(mensaje,"Error %s ", strerror(errno)); - ERROR_MSG(mensaje); - touchwin(VIEW); + if (fd == -1) { + sprintf(msg,"File open failed: %s ", strerror(errno)); + ERROR_MSG(msg); + touchwin(VIEW); fd = fd2; - return; + return; } inedit=TRUE; update_all_lines(VIEW,WLINES-1); @@ -605,181 +678,188 @@ curs_set( 1); wmove( VIEW, cursor_pos_y, CURSOR_POS_X); wnoutrefresh(VIEW); + while (!QUIT) { - doupdate(); - ch = (resize_request) ? -1 : Getch(); + + doupdate(); + ch = (resize_request) ? -1 : Getch(); + #ifdef VI_KEYS - ch = ViKey(ch); + ch = ViKey(ch); #endif - if (resize_request) - { - SetupViewWindow(file_path); - Change2Edit(file_path); -/* current_line = oldpos/BYTES;*/ - update_all_lines(VIEW,WLINES-1); - wmove( VIEW, cursor_pos_y, CURSOR_POS_X); - wnoutrefresh(VIEW); - doupdate(); - } - - switch(ch){ - case ESC: QUIT=TRUE; - break; - case KEY_DOWN: /*ScrollDown();*/ - fstat(fd,&fdstat); - if (fdstat.st_size > ((cursor_pos_y + current_line - 1) * BYTES + CURSOR_POSX)) { - - if (fdstat.st_size > ((cursor_pos_y + current_line - 1 + 1) * BYTES + CURSOR_POSX)) { - - if (cursor_pos_y < WLINES-1){ - wmove( VIEW, ++cursor_pos_y, CURSOR_POS_X); - wnoutrefresh(VIEW); - } else { - ++current_line; - scroll_down(VIEW); - wmove( VIEW, cursor_pos_y, CURSOR_POS_X); - wnoutrefresh(VIEW); - } - } else { - /* special case: last line */ - - if (fdstat.st_size > ((cursor_pos_y + current_line - 1 + 1) * BYTES)) { - - for(cursor_pos_x = 0; (CURSOR_POSX + 1) < (fdstat.st_size % BYTES); cursor_pos_x++); - - if (cursor_pos_y < WLINES-1){ - wmove( VIEW, ++cursor_pos_y, CURSOR_POS_X); - wnoutrefresh(VIEW); - } else { - ++current_line; - scroll_down(VIEW); - wmove( VIEW, cursor_pos_y, CURSOR_POS_X); - wnoutrefresh(VIEW); - } - } - } - } else { - beep(); - } - break; - case KEY_UP: /*ScroollUp();*/ - if (cursor_pos_y > 0) - { - wmove( VIEW, --cursor_pos_y, CURSOR_POS_X); - wnoutrefresh(VIEW); - } else if (current_line > 1) { - current_line--; - scroll_up(VIEW); - wmove( VIEW, cursor_pos_y, CURSOR_POS_X); - wnoutrefresh(VIEW); - } else - beep(); - break; - case KEY_LEFT: /* move 1 char left */ - if ( cursor_pos_x > 0 ) { - cursor_pos_x-=1; - wmove( VIEW, cursor_pos_y, CURSOR_POS_X); - } else if (cursor_pos_y > 0 ) { - /*cursor_pos_x=ultimo_caracter;*/ - cursor_pos_x=CANTX(BYTES) - 1; - wmove( VIEW, --cursor_pos_y,CURSOR_POS_X); - } else if (current_line > 1) { - current_line--; - scroll_up(VIEW); - cursor_pos_x=CANTX(BYTES) - 1; - wmove( VIEW, cursor_pos_y, CURSOR_POS_X); - } else - beep(); - wnoutrefresh(VIEW); - break; - case KEY_PPAGE: /*ScrollPageDown();*/ - if (current_line > WLINES) - current_line -= WLINES; - else - if (current_line > 1) - current_line = 1; - else - beep(); -/* oldpos = current_line * BYTES;*/ - update_all_lines(VIEW,WLINES); - wmove( VIEW, cursor_pos_y, CURSOR_POS_X); - wnoutrefresh(VIEW); - break; - case KEY_RIGHT: move_right(VIEW); - wnoutrefresh(VIEW); - break; - case KEY_NPAGE: /*ScroollPageUp();*/ - fstat(fd,&fdstat); - if (fdstat.st_size > ((current_line - 1 + WLINES + cursor_pos_y) * BYTES) + CURSOR_POSX ) { - current_line += WLINES; - } else { - int n; - n = fdstat.st_size / BYTES; /* numer of full lines */ - if(fdstat.st_size % BYTES) { - n++; /* plus 1 not fully used line */ - } - if(current_line != n) { - current_line = n; - cursor_pos_y = 0; - for(cursor_pos_x = 0; (CURSOR_POSX + 1) < (fdstat.st_size % BYTES); cursor_pos_x++); - } else { - beep(); - } - } -/* oldpos = current_line * BYTES;*/ - update_all_lines(VIEW,WLINES); - wmove( VIEW, cursor_pos_y, CURSOR_POS_X); - wnoutrefresh(VIEW); - break; - case KEY_HOME: - if (CURSOR_POSX > 0) { - cursor_pos_x = 0; - wmove( VIEW, cursor_pos_y, CURSOR_POS_X); - } else - beep(); - wnoutrefresh(VIEW); - break; - case KEY_END: - fstat(fd,&fdstat); - if ( ((cursor_pos_y + current_line) * BYTES) > fdstat.st_size ) { - cursor_pos_x = CANTX(fdstat.st_size % BYTES) - 1; - } else { - cursor_pos_x = CANTX(BYTES)-1; - } - wmove( VIEW, cursor_pos_y, CURSOR_POS_X); - wnoutrefresh(VIEW); - break; - case '\t' : - /* move cursor to the the other part of the window*/ - if (inhex){ - inhex=FALSE; - cursor_pos_x=cursor_pos_x/2; - }else{ - inhex=TRUE; - cursor_pos_x=cursor_pos_x*2; - } - wmove( VIEW, cursor_pos_y, CURSOR_POS_X); - wnoutrefresh(VIEW); - break; - case 'L' & 0x1f: - clearok(stdscr,TRUE); - RefreshWindow(stdscr); - break; - - case 'q': - case 'Q': if (inhex) { - QUIT=TRUE; - break; - } - default: - change_char(ch); - wmove(VIEW, cursor_pos_y, 0); - update_line(VIEW, current_line+cursor_pos_y); - move_right(VIEW); - wmove(VIEW, cursor_pos_y, CURSOR_POS_X); - wnoutrefresh(VIEW); - break; - } + if (resize_request) + { + DoResize(file_path); + resize_request = FALSE; + continue; + } + + switch(ch) { + +#ifdef KEY_RESIZE + + case KEY_RESIZE: resize_request = TRUE; + break; +#endif + case ESC: QUIT=TRUE; + break; + + case KEY_DOWN: /*ScrollDown();*/ + fstat(fd,&fdstat); + if (fdstat.st_size > ((cursor_pos_y + current_line - 1) * BYTES + CURSOR_POSX)) { + + if (fdstat.st_size > ((cursor_pos_y + current_line - 1 + 1) * BYTES + CURSOR_POSX)) { + + if (cursor_pos_y < WLINES-1) { + wmove( VIEW, ++cursor_pos_y, CURSOR_POS_X); + wnoutrefresh(VIEW); + } else { + ++current_line; + scroll_down(VIEW); + wmove( VIEW, cursor_pos_y, CURSOR_POS_X); + wnoutrefresh(VIEW); + } + } else { + /* special case: last line */ + + if (fdstat.st_size > ((cursor_pos_y + current_line - 1 + 1) * BYTES)) { + + for(cursor_pos_x = 0; (CURSOR_POSX + 1) < (fdstat.st_size % BYTES); cursor_pos_x++); + + if (cursor_pos_y < WLINES-1) { + wmove( VIEW, ++cursor_pos_y, CURSOR_POS_X); + wnoutrefresh(VIEW); + } else { + ++current_line; + scroll_down(VIEW); + wmove( VIEW, cursor_pos_y, CURSOR_POS_X); + wnoutrefresh(VIEW); + } + } + } + } else { + beep(); + } + break; + case KEY_UP: /*ScroollUp();*/ + if (cursor_pos_y > 0) + { + wmove( VIEW, --cursor_pos_y, CURSOR_POS_X); + wnoutrefresh(VIEW); + } else if (current_line > 1) { + current_line--; + scroll_up(VIEW); + wmove( VIEW, cursor_pos_y, CURSOR_POS_X); + wnoutrefresh(VIEW); + } else { + beep(); + } + break; + case KEY_LEFT: /* move 1 char left */ + if ( cursor_pos_x > 0 ) { + cursor_pos_x-=1; + wmove( VIEW, cursor_pos_y, CURSOR_POS_X); + } else if (cursor_pos_y > 0 ) { + /*cursor_pos_x=ultimo_caracter;*/ + cursor_pos_x=CANTX(BYTES) - 1; + wmove( VIEW, --cursor_pos_y,CURSOR_POS_X); + } else if (current_line > 1) { + current_line--; + scroll_up(VIEW); + cursor_pos_x=CANTX(BYTES) - 1; + wmove( VIEW, cursor_pos_y, CURSOR_POS_X); + } else { + beep(); + } + wnoutrefresh(VIEW); + break; + case KEY_PPAGE: /*ScrollPageDown();*/ + if (current_line > WLINES) + current_line -= WLINES; + else if (current_line > 1) + current_line = 1; + else + beep(); + update_all_lines(VIEW,WLINES); + wmove( VIEW, cursor_pos_y, CURSOR_POS_X); + wnoutrefresh(VIEW); + break; + case KEY_RIGHT: move_right(VIEW); + wnoutrefresh(VIEW); + break; + case KEY_NPAGE: /*ScroollPageUp();*/ + fstat(fd,&fdstat); + if (fdstat.st_size > ((current_line - 1 + WLINES + cursor_pos_y) * BYTES) + CURSOR_POSX ) { + current_line += WLINES; + } else { + int n; + n = fdstat.st_size / BYTES; /* numer of full lines */ + if(fdstat.st_size % BYTES) { + n++; /* plus 1 not fully used line */ + } + if(current_line != n) { + current_line = n; + cursor_pos_y = 0; + for(cursor_pos_x = 0; (CURSOR_POSX + 1) < (fdstat.st_size % BYTES); cursor_pos_x++); + } else { + beep(); + } + } + update_all_lines(VIEW,WLINES); + wmove( VIEW, cursor_pos_y, CURSOR_POS_X); + wnoutrefresh(VIEW); + break; + case KEY_HOME: + if (CURSOR_POSX > 0) { + cursor_pos_x = 0; + wmove( VIEW, cursor_pos_y, CURSOR_POS_X); + } else { + beep(); + } + wnoutrefresh(VIEW); + break; + case KEY_END: + fstat(fd,&fdstat); + if ( ((cursor_pos_y + current_line) * BYTES) > fdstat.st_size ) { + cursor_pos_x = CANTX(fdstat.st_size % BYTES) - 1; + } else { + cursor_pos_x = CANTX(BYTES)-1; + } + wmove( VIEW, cursor_pos_y, CURSOR_POS_X); + wnoutrefresh(VIEW); + break; + case '\t' : + /* move cursor to the the other part of the window*/ + if (inhex){ + inhex=FALSE; + cursor_pos_x=cursor_pos_x/2; + } else { + inhex=TRUE; + cursor_pos_x=cursor_pos_x*2; + } + wmove( VIEW, cursor_pos_y, CURSOR_POS_X); + wnoutrefresh(VIEW); + break; + case 'L' & 0x1f: + clearok(stdscr,TRUE); + RefreshWindow(stdscr); + break; + + case 'q': + case 'Q': + if (inhex) { + QUIT=TRUE; + break; + } + default: + change_char(ch); + wmove(VIEW, cursor_pos_y, 0); + update_line(VIEW, current_line+cursor_pos_y); + move_right(VIEW); + wmove(VIEW, cursor_pos_y, CURSOR_POS_X); + wnoutrefresh(VIEW); + break; + } } curs_set( 0); close(fd); @@ -791,123 +871,127 @@ int InternalView(char *file_path) { - long oldpos; int ch; BOOL QUIT=FALSE; hexoffset = (!strcmp(HEXEDITOFFSET, "HEX")) ? TRUE : FALSE; if (stat(file_path, &fdstat)!=0) - return -1; + return -1; if (!(S_ISREG(fdstat.st_mode)) || S_ISBLK(fdstat.st_mode)) - return -1; + return -1; fd=open(file_path,O_RDONLY); if (fd == -1) - return -1; + return -1; SetupViewWindow(file_path); current_line = 1; - oldpos = 1; update_all_lines(VIEW,WLINES-1); + while (!QUIT) { - ch = (resize_request) ? -1 : Getch(); + + ch = (resize_request) ? -1 : WGetch(VIEW); + #ifdef VI_KEYS - ch = ViKey(ch); + ch = ViKey(ch); #endif + if (resize_request) { - SetupViewWindow(file_path); - current_line = oldpos/BYTES; - update_all_lines(VIEW,WLINES-1); - } - - switch(ch){ - case ESC: - case 'q': - case 'Q': QUIT=TRUE; - break; - case 'e': - case 'E': Change2Edit(file_path); - hex_edit(file_path); - update_all_lines(VIEW,WLINES-1); - Change2View(file_path); - break; - case KEY_DOWN: /*ScrollDown();*/ - fstat(fd,&fdstat); - if (fdstat.st_size > (current_line * BYTES) ) - { - current_line++; - oldpos = current_line * BYTES; - scroll_down(VIEW); - } - else - beep(); - break; - case KEY_UP: /*ScroollUp();*/ - if (current_line > 1) - { - current_line--; - oldpos = current_line * BYTES; - scroll_up(VIEW); - } - else - beep(); - break; - case KEY_LEFT: - case KEY_PPAGE: /*ScrollPageDown();*/ - if (current_line > WLINES) - current_line -= WLINES; - else - if (current_line > 1) - current_line = 1; - else - beep(); - oldpos = current_line * BYTES; - update_all_lines(VIEW,WLINES); - break; - case KEY_RIGHT: - case KEY_NPAGE: /*ScroollPageUp();*/ - fstat(fd,&fdstat); - if (fdstat.st_size > ((current_line - 1 + WLINES) * BYTES) ) { - current_line += WLINES; - } else { - int n; - n = fdstat.st_size / BYTES; /* numer of full lines */ - if(fdstat.st_size % BYTES) { - n++; /* plus 1 not fully used line */ - } - if(current_line != n) { - current_line = n; - } else { - beep(); - } - } - oldpos = current_line * BYTES; - update_all_lines(VIEW,WLINES); - break; - case KEY_HOME: /*ScrollHome();*/ - if (current_line > 1) - { - current_line = 1; - oldpos = current_line * BYTES; - update_all_lines(VIEW,WLINES-1); - }else - beep(); - break; - case KEY_END: /*ScrollEnd();*/ - fstat(fd,&fdstat); - if (fdstat.st_size >= BYTES * 2) - current_line = (fdstat.st_size - BYTES) / BYTES; - else - beep(); - oldpos = current_line * BYTES; - update_all_lines(VIEW,WLINES); - break; - case 'L' & 0x1f: - clearok(stdscr,TRUE); - RefreshWindow(stdscr); - break; - default: break; - } + DoResize(file_path); + resize_request = FALSE; + continue; + } + + switch(ch) { + +#ifdef KEY_RESIZE + case KEY_RESIZE: resize_request = TRUE; + break; +#endif + + case ESC: + case 'q': + case 'Q': QUIT=TRUE; + break; + case 'e': + case 'E': Change2Edit(file_path); + hex_edit(file_path); + update_all_lines(VIEW,WLINES-1); + Change2View(file_path); + break; + case KEY_DOWN: /*ScrollDown();*/ + fstat(fd,&fdstat); + if (fdstat.st_size > (current_line * BYTES) ) + { + current_line++; + scroll_down(VIEW); + } else { + beep(); + } + break; + case KEY_UP: /*ScroollUp();*/ + if (current_line > 1) + { + current_line--; + scroll_up(VIEW); + } else { + beep(); + } + break; + case KEY_LEFT: + case KEY_PPAGE: /*ScrollPageDown();*/ + if (current_line > WLINES) + current_line -= WLINES; + else + if (current_line > 1) + current_line = 1; + else + beep(); + update_all_lines(VIEW,WLINES); + break; + case KEY_RIGHT: + case KEY_NPAGE: /*ScroollPageUp();*/ + fstat(fd,&fdstat); + if (fdstat.st_size > ((current_line - 1 + WLINES) * BYTES) ) { + current_line += WLINES; + } else { + int n; + n = fdstat.st_size / BYTES; /* numer of full lines */ + if(fdstat.st_size % BYTES) { + n++; /* plus 1 not fully used line */ + } + if(current_line != n) { + current_line = n; + } else { + beep(); + } + } + update_all_lines(VIEW,WLINES); + break; + case KEY_HOME: /*ScrollHome();*/ + if (current_line > 1) + { + current_line = 1; + update_all_lines(VIEW,WLINES-1); + } else { + beep(); + } + break; + case KEY_END: /*ScrollEnd();*/ + fstat(fd,&fdstat); + if (fdstat.st_size >= BYTES * 2) { + current_line = (fdstat.st_size - BYTES) / BYTES; + } + else + beep(); + update_all_lines(VIEW,WLINES); + break; + case 'L' & 0x1f: + clearok(stdscr,TRUE); + RefreshWindow(stdscr); + break; + default: break; + } } Print( stdscr, 0, 0, "Path: ", MENU_COLOR ); delwin(VIEW); @@ -915,5 +999,8 @@ touchwin(stdscr); wnoutrefresh(stdscr); close(fd); + resize_request = resize_done; + resize_done = FALSE; return 0; } + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ytree-2.08/ytree-2.08.lsm new/ytree-2.09/ytree-2.08.lsm --- old/ytree-2.08/ytree-2.08.lsm 2024-04-05 14:24:38.000000000 +0200 +++ new/ytree-2.09/ytree-2.08.lsm 1970-01-01 01:00:00.000000000 +0100 @@ -1,18 +0,0 @@ -Begin4 -Title: ytree-2.08 -Version: 2.08 -Entered-date: 2024-03-17 -Description: Ytree is a nifty filemanager similar to xtree. - With some helper-applications (zip/zoo/tar/rpm etc.) - you can also browse archive files. Viewers for - "special" files are configurable (*.wav, *.gif etc.). - Even the commands/menus are now user configurable. - For a screenshot visit http://www.han.de/~werner/ytree.html -Keywords: file manager, browser, xtree -Author: werner@frolix.han.de (Werner Bregulla) -Maintained-by: werner@frolix.han.de (Werner Bregulla) -Primary-site: http://www.han.de/~werner/ytree.html - ytree-2.08.tar.gz - ytree-2.08.lsm -Copying-policy: GPL -End diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ytree-2.08/ytree-2.09.lsm new/ytree-2.09/ytree-2.09.lsm --- old/ytree-2.08/ytree-2.09.lsm 1970-01-01 01:00:00.000000000 +0100 +++ new/ytree-2.09/ytree-2.09.lsm 2024-05-27 19:21:37.000000000 +0200 @@ -0,0 +1,18 @@ +Begin4 +Title: ytree-2.09 +Version: 2.09 +Entered-date: 2024-05-27 +Description: Ytree is a nifty filemanager similar to xtree. + With some helper-applications (zip/zoo/tar/rpm etc.) + you can also browse archive files. Viewers for + "special" files are configurable (*.wav, *.gif etc.). + Even the commands/menus are now user configurable. + For a screenshot visit http://www.han.de/~werner/ytree.html +Keywords: file manager, browser, xtree +Author: werner@frolix.han.de (Werner Bregulla) +Maintained-by: werner@frolix.han.de (Werner Bregulla) +Primary-site: http://www.han.de/~werner/ytree.html + ytree-2.09.tar.gz + ytree-2.09.lsm +Copying-policy: GPL +End diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ytree-2.08/ytree.h new/ytree-2.09/ytree.h --- old/ytree-2.08/ytree.h 2024-04-05 14:24:38.000000000 +0200 +++ new/ytree-2.09/ytree.h 2024-05-27 19:20:04.000000000 +0200 @@ -1088,6 +1088,7 @@ extern LONGLONG AtoLL(char* cptr); extern void DisplayTree(WINDOW *win, int start_entry_no, int hilight_no); extern void ReCreateWindows(void); +extern int WGetch(WINDOW *win); extern int Getch(void); extern int DirUserMode(DirEntry *dir_entry, int ch); extern int FileUserMode(FileEntryList *file_entry_list, int ch);
participants (1)
-
Source-Sync