Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Sep 1999 14:51:15 -0700
From:      Darryl Okahata <darrylo@sr.hp.com>
To:        freebsd-current@FreeBSD.ORG
Cc:        Anton Berezin <tobez@plab.ku.dk>
Subject:   Re: ccd build failure 
Message-ID:  <199909232151.OAA06536@mina.sr.hp.com>
In-Reply-To: Your message of "Thu, 23 Sep 1999 21:42:11 %2B0200." <199909231942.VAA01843@dorifer.heim3.tu-clausthal.de> 

next in thread | previous in thread | raw e-mail | index | archive | help
--Multipart_Thu_Sep_23_14:51:14_1999-1
Content-Type: text/plain; charset=US-ASCII

Oliver Fromme <olli@dorifer.heim3.tu-clausthal.de> wrote:

> Uhm...  Maybe I misunderstand what your 100-line perl script
> does, but I use the following 3-line shell script instead:
> 
>    #!/bin/sh -
>    cvs status | grep '^File:' | grep -v 'Status: Up-to-date$'
>    true

     This works (and is faster), but it doesn't give you concise,
nicely-formatted pathnames.  Personally, I prefer status like:

i386/linux/linux_file.c                            Locally Modified
kern/imgact_elf.c                                  Locally Modified

instead of:

cvs server: Examining aaa ...
cvs server: Examining bbb ...
cvs server: Examining ccc ...
cvs server: Examining ddd ...
cvs server: Examining eee ...
File: linux_file.c	    Status: Locally Modified
cvs server: Examining fff ...
cvs server: Examining ggg ...
File imgact_elf.c	    Status: Locally Modified

I think the script's output is easier to read.

[ Hmmm, but you do incidentally bring up a point: it's better to parse
  the output of "cvs status -R", instead of the ugly way used by the
  script.  I've attached a newer, faster version.  Instead of taking
  around 3 minutes to list the status below /usr/src/sys, this new
  version takes around 1 minute.  I've also applied Anton's fix.  ]

--
	Darryl Okahata
	darrylo@sr.hp.com

DISCLAIMER: this message is the author's personal opinion and does not
constitute the support, opinion, or policy of Hewlett-Packard, or of the
little green men that have been following him all day.


--Multipart_Thu_Sep_23_14:51:14_1999-1
Content-Type: text/plain; charset=US-ASCII
Content-Disposition: attachment; filename="cvsinfo"
Content-Transfer-Encoding: quoted-printable

#! /usr/bin/perl
#########################################################################=
######
#
# File:         cvsinfo
# RCS:          $Header: $
# Description:  List CVS files in the current directory and below that ar=
e
#		not up-to-date.  These files are typically those which have
#		been modified or need updating.
#
#		This is a new, rewritten, version, thanks to feedback from
#		Anton Berezin <tobez@plab.ku.dk> and
#		Oliver Fromme <olli@dorifer.heim3.tu-clausthal.de>.
#
#		Usage:
#
#			cvsinfo [-a] [-l]
#
#		Options:
#
#		-a	Show status of all files, and not just those which
#			are not up-to-date.
#
#		-l	Show status of files in the current directory only.
#			Do not recurse into subdirectories.
#
# Author:       Darryl Okahata
# Created:      Thu Sep 23 14:32:34 1999
# Modified:     Thu Sep 23 14:45:03 1999 (Darryl Okahata) darrylo@sr.hp.c=
om
# Language:     CPerl
# Package:      N/A
# Status:       Experimental
#
# (C) Copyright 1999, Hewlett-Packard, all rights reserved.
#
#########################################################################=
######

#########################################################################=
######

require 'getopts.pl';
&Getopts('al');
$all_status =3D 1 if ($opt_a);

# Explicitly specify options, just in case the user has overridden them i=
n
# ~/.cvsrc.
if ($opt_l) {
    $recursive =3D "-l";
} else {
    $recursive =3D "-R";
}

$dir =3D ".";
open(IN, "cvs status $recursive 2>&1 |") || die "$!";
while(<IN>) {
    if (/^cvs\s+server:\s+Examining\s+([^\s].*)$/) {
	$dir =3D $1;
    } elsif (/^File:\s+(?:no\s+file\s+)?([^\s]+)\s+Status:\s+(.+)$/i){
	$file =3D $1;
	$status =3D $2;
	if ($all_status || $status ne 'Up-to-date') {
	    if ($status eq 'Needs Patch') {
		$status =3D 'Needs Updating';
	    }
	    printf("%-50s %s\n", ($dir eq '.') ? $file : "$dir/$file",
		   $status);
	    if ($status =3D~ /Locally Modified/) {
		push(@update_files, $file);
	    }
	}
    } elsif (/\[status\s+aborted\]/) {
	die "$_\n";
    }
}

--Multipart_Thu_Sep_23_14:51:14_1999-1--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199909232151.OAA06536>