#!/usr/bin/php -q "", // name "v" => "", // version "r" => "", // release "a" => "" // architecture ); $parts = explode("-", substr($file, 0, strlen($file) - 4)); $temp = explode(".", array_pop($parts)); $p["a"] = array_pop($temp); $p["r"] = implode(".", $temp); $p["v"] = array_pop($parts); $p["n"] = implode("-", $parts); return $p; } // // WARNING: !feof(STDIN) with fgets(STDIN) doesn't work... using 2 files // // // WARNING: ASSUMING THAT LISTS ARE ALREADY SORTED!!! // if ($_SERVER['argc'] < 3) { //print("Usage: ".$_SERVER['argv'][0]." FILE1 FILE2\n"); print("Usage: ".$_SERVER['argv'][0]." 2DL_LST EXISTING_LST\n"); exit(1); } $fname = $_SERVER['argv'][1]; $fname2 = $_SERVER['argv'][2]; if ( !file_exists($fname) OR is_dir($fname) OR !file_exists($fname2) OR is_dir($fname2)) { print("error: can't open: '$fname' or '$fname2'\n"); exit(2); } // first parse second file to array $fp2=fopen($fname2, "r"); $ar2=array(); $i=0; $str=fgets($fp2, 1024); while (!feof($fp2)) { $rpm2=parse_rpm($str); $ar2[$i]=$rpm2['n']; $i++; $str=fgets($fp2, 1024); } // $fp=fopen($fname, "r"); $str=fgets($fp, 1024); $found=false; while (!feof($fp)) { $rpm1=parse_rpm($str); foreach ($ar2 as $s) { if ($s == $rpm1['n']) { $found = true; break; } } if (!$found) { print($str); } $found=false; $str=fgets($fp, 1024); } fclose($fp2); fclose($fp); ?>