releasing/blocks/cclient/patches/linux/apt-cache-search.patch
author kelvzhu
Thu, 02 Sep 2010 15:02:14 +0800
changeset 632 934f9131337b
permissions -rw-r--r--
Delivery Blocks to SF
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
632
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
     1
*** apt-0.7.20.2/cmdline/apt-cache.cc	2009-02-07 17:09:35.000000000 +0200
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
     2
--- apt-0.7.20.2-rhel/cmdline/apt-cache.cc	2010-01-08 20:21:29.000000000 +0200
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
     3
***************
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
     4
*** 1208,1214 ****
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
     5
     pkgCache::VerFileIterator Vf = V.FileList();
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
     6
     for (; Vf.end() == false; Vf++)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
     7
        if ((Vf.File()->Flags & pkgCache::Flag::NotSource) == 0)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
     8
! 	 break;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
     9
     if (Vf.end() == true)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    10
        Vf = V.FileList();
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    11
        
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    12
--- 1208,1214 ----
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    13
     pkgCache::VerFileIterator Vf = V.FileList();
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    14
     for (; Vf.end() == false; Vf++)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    15
        if ((Vf.File()->Flags & pkgCache::Flag::NotSource) == 0)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    16
! 	 			break;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    17
     if (Vf.end() == true)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    18
        Vf = V.FileList();
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    19
        
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    20
***************
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    21
*** 1233,1238 ****
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    22
--- 1233,1245 ----
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    23
  
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    24
     // Get a pointer to start of Description field
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    25
     const unsigned char *DescP = (unsigned char*)strstr((char*)Buffer, "Description:");
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    26
+    // HH: Bug fix. If descriptions are not found quit now to prevent crash
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    27
+    if (DescP == NULL)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    28
+    {
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    29
+ 	cout << "E: Malformed packages inserted into cache. Description field missing!";
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    30
+ 	delete [] Buffer;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    31
+ 	return false;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    32
+    }
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    33
  
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    34
     // Write all but Description
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    35
     if (fwrite(Buffer,1,DescP - Buffer,stdout) < (size_t)(DescP - Buffer))
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    36
***************
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    37
*** 1282,1287 ****
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    38
--- 1289,1300 ----
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    39
  bool Search(CommandLine &CmdL)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    40
  {
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    41
     pkgCache &Cache = *GCache;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    42
+    // HH: Bug fix. No need to do anything if no packages
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    43
+    if (Cache.HeaderP->PackageCount == 0)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    44
+    {
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    45
+    		return true;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    46
+    }
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    47
+    	
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    48
     bool ShowFull = _config->FindB("APT::Cache::ShowFull",false);
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    49
     bool NamesOnly = _config->FindB("APT::Cache::NamesOnly",false);
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    50
     unsigned NumPatterns = CmdL.FileSize() -1;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    51
***************
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    52
*** 1316,1322 ****
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    53
     }
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    54
     
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    55
     ExDescFile *DFList = new ExDescFile[Cache.HeaderP->PackageCount+1];
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    56
!    memset(DFList,0,sizeof(*DFList)*Cache.HeaderP->PackageCount+1);
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    57
  
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    58
     // Map versions that we want to write out onto the VerList array.
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    59
     for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; P++)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    60
--- 1329,1336 ----
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    61
     }
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    62
     
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    63
     ExDescFile *DFList = new ExDescFile[Cache.HeaderP->PackageCount+1];
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    64
!    // HH: Bug fix. Memset all the memory
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    65
!    memset(DFList, 0, sizeof(*DFList) * (Cache.HeaderP->PackageCount + 1));
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    66
  
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    67
     // Map versions that we want to write out onto the VerList array.
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    68
     for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; P++)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    69
***************
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    70
*** 1416,1423 ****
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    71
        pkgCache::PkgIterator Pkg = Cache.FindPkg(*I);
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    72
        if (Pkg.end() == true)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    73
        {
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    74
! 	 _error->Warning(_("Unable to locate package %s"),*I);
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    75
! 	 continue;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    76
        }
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    77
  
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    78
        ++found;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    79
--- 1430,1437 ----
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    80
        pkgCache::PkgIterator Pkg = Cache.FindPkg(*I);
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    81
        if (Pkg.end() == true)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    82
        {
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    83
! 	 			_error->Warning(_("Unable to locate package %s"),*I);
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    84
! 	 			continue;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    85
        }
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    86
  
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    87
        ++found;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    88
***************
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    89
*** 1425,1444 ****
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    90
        // Find the proper version to use.
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    91
        if (_config->FindB("APT::Cache::AllVersions","true") == true)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    92
        {
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    93
! 	 pkgCache::VerIterator V;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    94
! 	 for (V = Pkg.VersionList(); V.end() == false; V++)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    95
! 	 {
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    96
! 	    if (DisplayRecord(V) == false)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    97
! 	       return false;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    98
! 	 }
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
    99
        }
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   100
        else
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   101
        {
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   102
! 	 pkgCache::VerIterator V = Plcy.GetCandidateVer(Pkg);
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   103
! 	 if (V.end() == true || V.FileList().end() == true)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   104
! 	    continue;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   105
! 	 if (DisplayRecord(V) == false)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   106
! 	    return false;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   107
        }      
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   108
     }
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   109
  
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   110
--- 1439,1458 ----
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   111
        // Find the proper version to use.
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   112
        if (_config->FindB("APT::Cache::AllVersions","true") == true)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   113
        {
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   114
! 				 pkgCache::VerIterator V;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   115
! 				 for (V = Pkg.VersionList(); V.end() == false; V++)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   116
! 				 {
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   117
! 				    if (DisplayRecord(V) == false)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   118
! 				       return false;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   119
! 				 }
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   120
        }
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   121
        else
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   122
        {
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   123
! 				 pkgCache::VerIterator V = Plcy.GetCandidateVer(Pkg);
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   124
! 				 if (V.end() == true || V.FileList().end() == true)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   125
! 				    continue;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   126
! 				 if (DisplayRecord(V) == false)
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   127
! 				    return false;
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   128
        }      
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   129
     }
934f9131337b Delivery Blocks to SF
kelvzhu
parents:
diff changeset
   130