#!/usr/local/bin/perl
#
# vscan :: Virtual scan for Mew that give a single view for multiple folders
#
# Auther:  Kazuhiko Yamamoto <kazu@is.aist-nara.ac.jp>
# Version: 0.2 
# Created: June 17, 1995
# Revised: June 18, 1995
#
# Usage:
#   vscan [--pick pick_patterns] [--scan scan_options] +folder [+folder ...]
#
# In the end of line, "^M" for selective-display and folder/message follow. 

$pick = 0;
$scan = 0;

#
# ARGV[0] must not be "0".
#
while ($_ = $ARGV[0]) {
	if ( /\+(.*)/ ) {
		push(@folders, $_);
	} elsif ( $_ eq "--pick") {
		$pick = 1;
		$scan = 0;
	} elsif ( $_ eq "--scan") {
		$pick = 0;
		$scan = 1;
	} elsif ($scan) {
		if ($scanargs) {
			$scanargs = $scanargs . " " . $_;
		} else {
			$scanargs = $_;
		}
	} elsif ($pick) {
		if ($pickargs) {
			$pickargs = $pickargs . " " . $_;
		} else {
			$pickargs = $_;
		}
	}
	shift(@ARGV);
}

$num = 1;
while (@folders) {
	$messages = "";    
	if ($pickargs) {
		open(PICK, "pick $pickargs $folders[0] |");
		while(<PICK>) {
			chop;
			if ($messages) {
				$messages = $messages . " " . $_;
			} else {
				$messages = $_;
			}
		}
	} else {
		$messages = "all";
	}
	if ($messages) {
		open(FOLDER, "scan $scanargs $folders[0] $messages |");
		while(<FOLDER>) {
			chop;
			if (/ *([0-9]+)(.*)/) {
				# virtual number
				# contents
				# ^M for selective-display
				# +folder/message
				printf "%4d%s\015 %s %s\n", 
					$num, $2, $folders[0], $1;
			}
			$num ++;
		}
	}
	shift(@folders);
}

# End of vscan
