summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: a70b224)
raw | patch | inline | side by side (parent: a70b224)
author | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Wed, 5 Apr 2006 10:53:17 +0000 (10:53 +0000) | ||
committer | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Wed, 5 Apr 2006 10:53:17 +0000 (10:53 +0000) |
Read complete file, Udpate,Save to file.
Instead of using file handles for each line.
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@2988 594d385d-05f5-0310-b6e9-bd551577e9d8
Instead of using file handles for each line.
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@2988 594d385d-05f5-0310-b6e9-bd551577e9d8
include/class_ppdManager.inc | patch | blob | history |
index 1b09debc06fbfa04d3ca3f92f7cac2c85413d415..86f6c538567661e1317366b6ce201bc244fed88c 100644 (file)
return ($list);
}
-
+
function updateAttribute($file, $section, $attribute, $value)
{
$fsection= false;
$wp= fopen("$file.tmp", "w");
while (!feof($rp)){
- $line= fgets($rp, 1024);
+ $lines[]= fgets($rp, 1024);
+ }
+ $ret = "";
+ $done =false;
+ foreach($lines as $nr => $line){
+
if (preg_match("/\*OpenGroup:*\s+\**$section\/*/", $line)){
- $fsection= true;
- fwrite ($wp, $line);
- continue;
- }
+ $fsection= true;
+ $ret .=$line;
+ continue;
+ }
- if ($fsection){
+ if (($fsection) && ($section != "NO_SECTION")){
if (preg_match("/^\*CloseGroup:*\s+\**$section\/*/", $line)){
$fsection= false;
- fwrite ($wp, $line);
+ $ret .=$line;
+ continue;
+ }
+
+
+ if (preg_match("/^\*OpenUI:*\s+\**$attribute\/*/", $line)){
+ $fattribute= true;
+ $ret .= $line;
continue;
}
+ if ($fattribute){
+ if (preg_match("/^\*CloseUI:*\s+\**$attribute\/*/", $line)){
+ $fattribute= false;
+ $ret .= $line;
+ continue;
+ }
+
+ if (preg_match("/^\*Default$attribute:*\s+/", $line)){
+ $line= "*Default$attribute: $value\n";
+ $done =true;
+ }
+ }
+ }else{
if (preg_match("/^\*OpenUI:*\s+\**$attribute\/*/", $line)){
$fattribute= true;
- fwrite ($wp, $line);
+ $ret .= $line;
continue;
}
if ($fattribute){
if (preg_match("/^\*CloseUI:*\s+\**$attribute\/*/", $line)){
$fattribute= false;
- fwrite ($wp, $line);
+ $ret .= $line;
continue;
}
if (preg_match("/^\*Default$attribute:*\s+/", $line)){
$line= "*Default$attribute: $value\n";
+ $done =true;
}
}
}
- fwrite ($wp, $line);
+ $ret .=$line;
}
+ fwrite($wp,$ret);
+
fclose($wp);
fclose($rp);
}
}
}
-
-
+
function loadProperties($ppdFile)
{
$group= "";
$option= "";
$properties= array();
-
+
$fh= fopen ($ppdFile, 'r');
while (!feof($fh)) {
trigger_error(_('Group name not unique!'), E_USER_WARNING);
continue;
}
-
+
// TODO: Symbol values are not supported yet!
if (preg_match('/\^/', $line)){
trigger_error(_('Symbol values are not supported yet!'), E_USER_WARNING);
trigger_error(_('Nested options are not supported!'), E_USER_WARNING);
continue;
}
-
+
// TODO: Symbol values are not supported yet!
if (preg_match('/\^/', $line)){
trigger_error(_('Symbol values are not supported yet!'), E_USER_WARNING);
$type= trim(preg_replace('/^[^:]+:\s+/', '', $line));
$name= preg_replace('/:.*$/', '', $name);
$option= preg_replace('/:.*$/', '', $option);
-
+
// TODO: PickMany is not supported yet!
if (preg_match('/PickMany/i', $type)){
trigger_error(_('PickMany is not supported yet!'), E_USER_WARNING);
}
-
- $properties[$group][$option]= array('_name' => $name, '_type' => $type);
+ if(empty($group)){
+ $properties["NO_SECTION"][$option]= array('_name' => $name, '_type' => $type);
+ }else{
+ $properties[$group][$option]= array('_name' => $name, '_type' => $type);
+ }
continue;
}
/* Show interest for option parsing */
/* Default value? */
if (preg_match("@^\*Default$eoption:@", $line)){
$c= preg_replace("@^\*Default$eoption:\s+@", "", $line);
- $properties[$group][$option]['_default']= trim(trim($c, '"'));
+ if(empty($group)){
+ $properties["NO_SECTION"][$option]['_default']= trim(trim($c, '"'));
+ }else{
+ $properties[$group][$option]['_default']= trim(trim($c, '"'));
+ }
continue;
}
/* Possible value? */
if (preg_match("@^\*$eoption\s+@", $line)){
- #*PageSize Letter/US Letter: "<>setpagedevice"
+#*PageSize Letter/US Letter: "<>setpagedevice"
$c= preg_replace("@^\*$eoption\s+([^/]+).*$@", "$1", $line);
$d= preg_replace("@^\*$eoption\s+[^/]+/([^:]+).*$@", "$1", $line);
- $properties[$group][$option][trim($c)]= trim($d);
+ if(empty($group)){
+ $properties["NO_SECTION"][$option][trim($c)]= trim($d);
+ }else{
+ $properties[$group][$option][trim($c)]= trim($d);
+ }
continue;
}
}
-
}
fclose ($fh);
-
return ($properties);
}
-
+
function loadDescription($ppdFile)
{
$model= "";
$manufacturer= "";
-
+
$fh= fopen ($ppdFile, 'r');
while ((!feof($fh))&&($fh)) {
if (strlen($line) >= 256){
trigger_error(_('Parsing PPD file %s failed - line too long. Trailing characters have been ignored'), E_USER_WARNING);
}
-
+
/* Extract interesting informations */
if (preg_match('/^\*Manufacturer:/i', $line)){
$manufacturer= preg_replace('/^\*Manufacturer:\s+"?([^"]+)"?.*$/i', '\1', $line);
return ($this->cachedList);
}
-
+
}
?>