Date: Thu, 27 Oct 2011 16:47:41 +0900 (JST) From: Koichiro IWAO <meta@club.kyutech.ac.jp> To: FreeBSD-gnats-submit@FreeBSD.org Cc: meta@club.kyutech.ac.jp Subject: ports/162050: [patch] misc/lv directory opening problem fix Message-ID: <201110270747.p9R7lfxp078199@rose.club.kyutech.ac.jp> Resent-Message-ID: <201110270810.p9R8ABx7077521@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 162050 >Category: ports >Synopsis: [patch] misc/lv directory opening problem fix >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Oct 27 08:10:09 UTC 2011 >Closed-Date: >Last-Modified: >Originator: Koichiro IWAO >Release: FreeBSD 8.2-RELEASE-p1 amd64 >Organization: Kyushu Institute of Technology >Environment: System: FreeBSD rose.club.kyutech.ac.jp 8.2-RELEASE-p1 FreeBSD 8.2-RELEASE-p1 #1: Mon Apr 25 03:31:52 JST 2011 root@rose.club.kyutech.ac.jp:/usr/obj/usr/src/sys/MASAKIKERNEL amd64 >Description: misc/lv tries viewing directories by force. >How-To-Repeat: See differences between `less /` and `lv /`. I don't know whether author made to behave like this on purpose, anyway my patch makes lv to behave more less-like. >Fix: See an attached patch. --- lv.patch begins here --- diff -ruN --exclude='*~' /tmp/lv451/src/lv.c src/lv.c --- /tmp/lv451/src/lv.c 2004-01-05 16:30:15.000000000 +0900 +++ src/lv.c 2011-05-27 02:21:37.000000000 +0900 @@ -2,6 +2,7 @@ * lv.c * * All rights reserved. Copyright (C) 1996 by NARITA Tomio. + * Copyright (C) Oct 27, 2011 Koichiro IWAO. All rights reserved. * $Id: lv.c,v 1.10 2004/01/05 07:30:15 nrt Exp $ */ /* @@ -89,16 +90,35 @@ grep_mode = FALSE; } +private boolean_t isDirectory(byte **file) { + struct stat buf; + stat((unsigned char *)file, &buf); + if (S_ISDIR(buf.st_mode)) { + fprintf(stderr, "%s is a directory\n", file); + return TRUE; + } else { + return FALSE; + } +} + private boolean_t LvOpen( conf_t *conf ) { + boolean_t flagIsDirectory = FALSE; + if( NULL != conf->file ){ + if( TRUE == isDirectory( *conf->file ) ){ + flagIsDirectory = TRUE; + } if( NULL == (conf->st = StreamOpen( *conf->file )) ){ while( NULL != *(++conf->file) ){ - if( NULL != (conf->st = StreamOpen( *conf->file )) ) - return TRUE; + if( NULL != (conf->st = StreamOpen( *conf->file )) ){ + if( TRUE == isDirectory( *conf->file ) ){ + flagIsDirectory = TRUE; + } + } } - return FALSE; } + return (TRUE == flagIsDirectory ? FALSE : TRUE); } else { conf->st = StreamReconnectStdin(); } --- lv.patch ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201110270747.p9R7lfxp078199>