<pre>
------ Hard Masking ------
<?PHP
ini_set 
('max_execution_time'60);

// Include the config
require_once('../include/config.inc.php');

$hardmaskfile file($GLOBAL['portage_dir'].'/profiles/package.mask');
$noops = array();
   
$sql 'UPDATE ebuild SET hard_masked = 0';
mysql_query($sql) or die (mysql_error());
foreach(
$hardmaskfile as $value){
    
$value trim($value);
    if(
$value != ''){
        switch(
substr($value,0,1)){
            case 
'#':
                break;
            case 
'=':
            case 
'<':
            case 
'>':
                
// operator item
                
if($details separate_operator($value)){
                
                    
$ebuilds = array();
                    
$sql "SELECT ebuild_p 
                            FROM `category`, `package`, `ebuild`
                            WHERE category_p = category_f AND package_p = package_f AND `ebuild`.`_removed` IS NULL 
                            AND CONCAT(category_title, '/', package_title) = '"
.mysqlclean($details['pkg'])."'".
                            
$details['sql'];
                    
$results mysql_query($sql) or die(mysql_error() . $sql);
                    while(
$row mysql_fetch_assoc($results)){
                        
$ebuilds[] = $row['ebuild_p'];
                    }

                    if(
count($ebuilds) > 0){
                        
$sql "UPDATE ebuild SET hard_masked = 1 WHERE ebuild_p IN (".implode(','$ebuilds).")";
                        
mysql_query($sql) or die(mysql_error() . $sql);
                        
//echo $value . " *masked* \n";
                    
}else{
                        echo 
$value " NOT *masked* \n";
                    }
                }else{
                    echo 
$value " NOT parsed \n";
                }
                break;
            default :
                
// no operator mask all of package
                
$noops[] = "'".mysqlclean($value)."'";
                break;
        }
    }
    
}

// run the no operator masks
if(count($noops) > 0){
    
$ebuilds = array();
    
$sql "SELECT ebuild_p 
            FROM `category`, `package`, `ebuild`
            WHERE category_p = category_f AND package_p = package_f AND
            CONCAT(category_title, '/', package_title) IN ("
.implode(','$noops).")
            AND `ebuild`.`_removed` IS NULL "
;
    
$results mysql_query($sql) or die(mysql_error() . $sql);
    while(
$row mysql_fetch_assoc($results)){
        
$ebuilds[] = $row['ebuild_p'];
    }

    if(
count($ebuilds) > 0){
        
$sql "UPDATE ebuild SET hard_masked = 1 WHERE ebuild_p IN (".implode(','$ebuilds).")";
        
mysql_query($sql) or die(mysql_error() . $sql);
        
//echo $value . " *masked* \n";
    
}
}


function 
separate_operator($txt){
    switch(
substr($txt,0,2)){
        case 
'>=':
        case 
'<=':
            
$details separate_version(substr($txt2));
            
//if($details['revision'] != 0){
                
$sql " AND ((`ebuild_version` = '".$details['version']."' AND `ebuild_revision` ".substr($txt,0,2)." '".$details['revision']."')
                            OR `ebuild_version` "
.substr($txt,0,1)." '".str_replace('_'' ',$details['version'])."' )";
            
/*}else{
                $sql = " AND (`ebuild_version` ".substr($txt,0,2)." '".str_replace('_', ' ',$details['version'])."')";
            }*/
            
return array('pkg' => $details['program'], 'sql' => $sql);
    }
    
    switch(
substr($txt,0,1)){
        case 
'=':
            
$details separate_version(substr($txt1));
            if(!
strpos($details['version'], '*')){
                
$sql " AND `ebuild_version` = '".$details['version']."' AND `ebuild_revision` = '".$details['revision']."'";
            }else{
                
$sql " AND `ebuild_version` LIKE '".str_replace('*''%',$details['version'])."'";
            }
            return array(
'pkg' => $details['program'], 'sql' => $sql);

        case 
'>':
        case 
'<':
            
$details separate_version(substr($txt1));
            
//if($details['revision'] != 0){
                
$sql " AND ((`ebuild_version` = '".$details['version']."' AND `ebuild_revision` ".substr($txt,0,1)." '".$details['revision']."')
                            OR `ebuild_version` "
.substr($txt,0,1)." '".str_replace('_'' ',$details['version'])."' )";
            
/*}else{
                $sql = " AND (`ebuild_version` ".substr($txt,0,1)." '".str_replace('_', ' ',$details['version'])."')";
            }*/
            
return array('pkg' => $details['program'], 'sql' => $sql);
            
    }
    
    return 
false;
}

?>
</pre>