From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Thu, 1 Oct 2009 08:03:51 +0400 From: Alexey Tourbin To: devel@lists.altlinux.org Message-ID: <20091001040351.GM10769@altlinux.org> Mail-Followup-To: devel@lists.altlinux.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="SEFvVLxbW/dEDtN8" Content-Disposition: inline Subject: [devel] =?koi8-r?b?18/Q0s/TINDPINHa2cvVIPPJIC0gcmVhbGxvYyAmIGJp?= =?koi8-r?b?dCBoYWNrcw==?= X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Oct 2009 04:03:52 -0000 Archived-At: List-Archive: List-Post: --SEFvVLxbW/dEDtN8 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: quoted-printable lib/depends.c: 213 static /*@exposed@*/ struct availablePackage * 214 alAddPackage(availableList al, 215 Header h, /*@null@*/ /*@dependent@*/ const void * k= ey, 216 /*@null@*/ FD_t fd, /*@null@*/ rpmRelocation * relo= cs) 217 /*@modifies al, h @*/ 218 { 219 HGE_t hge =3D (HGE_t)headerGetEntryMinMemory; 220 HFD_t hfd =3D headerFreeData; 221 rpmTagType dnt, bnt; 222 struct availablePackage * p; 223 rpmRelocation * r; 224 int i; 225 int_32 * dirIndexes; 226 const char ** dirNames; 227 int numDirs, dirNum; 228 int * dirMapping; 229 struct dirInfo_s dirNeedle; 230 dirInfo dirMatch; 231 int first, last, fileNum; 232 int origNumDirs; 233 int pkgNum; 234 =20 235 if (al->size =3D=3D al->alloced) { 236 al->alloced +=3D al->delta; 237 al->list =3D xrealloc(al->list, sizeof(*al->list) * al->all= oced); 238 } =FA=C4=C5=D3=D8 =D7 =D0=CF=D3=CC=C5=C4=CE=C9=C8 =D3=D4=D2=CF=CB=C1=C8 =D0= =D2=CF=D7=C5=D2=D1=C5=D4=D3=D1, =C4=CF=D3=D4=C1=D4=CF=DE=CE=CF =CC=C9 =CD= =C5=D3=D4=C1 =D7 =CD=C1=D3=D3=C9=D7=C5 al->list (=D0=C5=D2=C5=C4 =D7=D3=D4=C1=D7=CB=CF=CA =CE=CF=D7=CF=C7=CF =DC= =CC=C5=CD=C5=CE=D4=C1). =E5=D3=CC=C9 =CD=C5=D3=D4=CF =CB=CF=CE=DE=C9=CC=CF= =D3=D8, =D4=CF =C4=C5=CC=C1=C5=D4=D3=D1 realloc "=D3 =DA=C1=D0=C1=D3=CF=CD" al->delta. =F0=C5=D2=D7=D9=CA =D7=CF=D0=D2=CF=D3 -- =C5=D3=D4=D8 =CC=C9 =D3=CD=D9=D3= =CC =D4=C1=CB=C9=CD =CF=C2=D2=C1=DA=CF=CD =C9=DA=C2=C5=C7=C1=D4=D8 =D7=D9= =DA=CF=D7=CF=D7 realloc. =E1 =C9=CD=C5=CE=CE=CF, =D2=C5=DA=C5=D2=D7=C9=D2=D5=C5=D4 =CC=C9 realloc = =C4=CF=D0=CF=CC=CE=C9=D4=C5=CC=D8=CE=CF=C5 =CD=C5=D3=D4=CF =CE=C1 =D3=CC=D5= =DE=C1=CA =D0=CF=D3=CC=C5=C4=D5=C0=DD=C9=C8 =D7=D9=DA=CF=D7=CF=D7. =E5=D3=CC=C9 =DC= =D4=CF =D4=C1=CB, =D4=CF =DA=C4=C5=D3=D8 =D0=D2=CF=D3=D4=CF =C4=D5=C2=CC=C9= =D2=D5=C5=D4=D3=D1 =CC=CF=C7=C9=CB=C1 realloc. =F7=D4=CF=D2=CF=CA =D7=CF=D0=D2=CF=D3 -- =CB=C1=CB =C9=DA=C2=C1=D7=C9=D4=D8= =D3=D1 =CF=D4 =C4=CF=D0=CF=CC=CE=C9=D4=C5=CC=D8=CE=D9=C8 =D0=CF=CC=C5=CA al= ->alloced =C9 al->delta. =F1=D3=CE=CF, =DE=D4=CF =CE=C1=CC=C9=DE=C9=C5 =CD=C5=D3=D4= =C1 =D7 =CD=C1=D3=D3=C9=D7=C5 =CD=CF=D6=CE=CF =D0=D2=CF=D7=C5=D2=D1=D4=D8 = =D0=CF =CF=C4=CE=CF=CD=D5 =D4=CF=CC=D8=CB=CF =D0=CF=CC=C0 al->size. =EE=C1=D0=D2= =C9=CD=C5=D2, =C5=D3=CC=C9 =D0=CF=CC=C5 size =CB=D2=C1=D4=CE=CF =CB=C1=CB= =CF=CD=D5-=D4=CF =DE=C9=D3=CC=D5, =D4=CF =D0=D2=C9 =C4=CF=D3=D4=C9=D6=C5=CE=C9=C9 =CB=D2=C1= =D4=CE=CF=D3=D4=C9 =CD=CF=D6=CE=CF =D7=D3=D1=CB=C9=CA =D2=C1=DA =D5=D7=C5= =CC=C9=DE=C9=D7=C1=D4=D8 =D2=C1=DA=CD=C5=D2 =CE=C1 =DC=D4=CF =DE=C9=D3=CC=CF. =FC=D4=CF =CC=D5=DE=DB=C5 =D7=D3=C5=C7= =CF =C4=C5=CC=C1=D4=D8 =D3=CF =D3=D4=C5=D0=C5=CE=D1=CD=C9 =C4=D7=CF=CA=CB= =C9, =D0=CF=D4=CF=CD=D5 =DE=D4=CF =D7 =DC=D4=CF=CD =D3=CC=D5=DE=C1=C5 modulo =DA=C1=CD=C5=CE=D1=D4=D3=D1 =CE= =C1 =C2=CF=CC=C5=C5 =C4=C5=DB=A3=D7=D9=CA bitwise and. const int step =3D 8; if ((al->size & (step - 1) =3D=3D 0) al->list =3D xrealloc(al->list, sizeof(*al->list) * (al->size + step)); =FC=D4=CF =D0=CF=CC=D5=DE=C1=C5=D4=D3=D1 =C1=D2=C9=C6=CD=C5=D4=C9=DE=C5=D3= =CB=C1=D1 =D0=D2=CF=C7=D2=C5=D3=D3=C9=D1 -- =D2=C1=DA=CD=C5=D2 =CD=C1=D3=D3= =C9=D7=C1 =D7=D3=A3 =D7=D2=C5=CD=D1 =D5=D7=C5=CC=C9=DE=C9=D7=C1=C5=D4=D3=D1 =CE=C1 step. =ED=CF=D6=CE=CF =D3= =C4=C5=CC=C1=D4=D8 =C7=C5=CF=CD=C5=D4=D2=C9=DE=C5=D3=CB=D5=C0 =D0=D2=CF=C7= =D2=C5=D3=D3=C9=C0 -- =DE=D4=CF=C2=D9 =D2=C1=DA=CD=C5=D2 =CD=C1=D3=D3=C9=D7=C1 =D5=C4=D7=C1=C9=D7= =C1=CC=D3=D1. static inline bool power_of_2(int x) { return (x & (x - 1)) =3D=3D 0; } if (power_of_2(al->size)) al->list =3D xrealloc(al->list, sizeof(*al->list) * (al->size << 1)); =F3=D5=DD=C5=D3=D4=D7=D5=C0=D4 =CC=C9 =C2=CF=CC=C5=C5 =CF=D0=D4=C9=CD=C1=CC= =D8=CE=D9=CA =D0=CC=C1=CE =C4=CC=D1 =D7=D9=C4=C5=CC=C5=CE=C9=D1 =D0=C1=CD= =D1=D4=C9 "=D3 =DA=C1=D0=C1=D3=CF=CD"? =F1=D3=CE=CF, =DE=D4=CF =CE=C1 =C2=CF=CC=D8=DB=C9=C8 =D2=C1=DA=CD=C5=D2=C1= =C8 =CD=C1=D3=D3=C9=D7=C1 =C1=D2=C9=C6=CD=C5=D4=C9=DE=C5=D3=CB=C1=D1 =D0=D2= =CF=C7=D2=C5=D3=D3=C9=D1 =C2=D5=C4=C5=D4 =D2=C1=D3=D4=C9 =D3=CC=C9=DB=CB=CF=CD =CD=C5=C4=CC=C5=CE=CE=CF. =F3 =C4=D2= =D5=C7=CF=CA =D3=D4=CF=D2=CF=CE=D9, "=D5=C4=D7=CF=C5=CE=C9=C5" =D2=C1=D3=D4= =A3=D4 =D3=CC=C9=DB=CB=CF=CD =C2=D9=D3=D4=D2=CF. =E8=CF=D4=C5=CC=CF=D3=D8 =C2=D9 =D2=C1=DA=CD=C5=D2 =CD= =C1=D3=D3=C9=D7=C1 =CE=C5 =D5=C4=D7=C1=C9=D7=C1=D4=D8, =C1 "=D5=D0=CF=CC=D4= =CF=D2=D1=D4=D8" -- =DE=D4=CF=C2=D9 =C2=D9=CC=CF 8, 12, 16, 24, 32, 64 =C9 =D4.=C4, =D4.=C5. 2^n, 2^n + 2^{n-1}, 2^{n+1}, ... =F4=CF =C5=D3=D4=D8 =C1=CC=C7=CF=D2=C9=D4=CD =C2=D5=C4=C5=D4 =D0=D2=C9=CD= =C5=D2=CE=CF =D4=C1=CB=CF=CA if (=D0=CF=CC=D5=D4=CF=D2=CE=D9=CA_=D2=C1=DA=CD=C5=D2) realloc(=C4=D7=CF=CA=CE=CF=CA =D2=C1=DA=CD=C5=D2); else if (=C4=D7=CF=CA=CE=CF=CA =D2=C1=DA=CD=C5=D2) realloc(=D0=CF=CC=D5=D4=CF=D2=CE=D9=CA =D2=C1=DA=CD=C5=D2); =ED=CF=D6=C5=D4 =CB=D4=CF-=CE=C9=C2=D5=C4=D8 =DA=CE=C1=C5=D4 =CB=C1=CB =DC= =D4=CF =CD=CF=D6=CE=CF =D0=CF=D0=D2=CF=DD=C5 =C9=DA=CF=C2=D2=C1=DA=C9=D4=D8= . =E9=CC=C9 =CD=CF=D6=C5=D4 =C2=D9=D4=D8 =CB=D4=CF-=CE=C9=C2=D5=C4=D8 =D7=C9=C4=C5=CC =CB=C1=CB =D7 =C4= =D2=D5=C7=C9=C8 =CD=C5=D3=D4=C1=C8 =D3 realloc'=CF=CD =D0=CF=D3=D4=D5=D0=C1= =C0=D4. --SEFvVLxbW/dEDtN8 Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iEYEARECAAYFAkrEKiYACgkQfBKgtDjnu0aauwCffQg9ViDOC4xZrEBLhoZ6TT+/ is0AoOIH7bXyE7SJaurQgVR245G/ewLs =ktET -----END PGP SIGNATURE----- --SEFvVLxbW/dEDtN8--