SOURCES: pldnotify.awk - update from r1.55
glen
glen at pld-linux.org
Fri Dec 1 14:17:27 CET 2006
Author: glen Date: Fri Dec 1 13:17:27 2006 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- update from r1.55
---- Files affected:
SOURCES:
pldnotify.awk (1.6 -> 1.7)
---- Diffs:
================================================================
Index: SOURCES/pldnotify.awk
diff -u SOURCES/pldnotify.awk:1.6 SOURCES/pldnotify.awk:1.7
--- SOURCES/pldnotify.awk:1.6 Tue Jan 6 15:27:51 2004
+++ SOURCES/pldnotify.awk Fri Dec 1 14:17:22 2006
@@ -1,5 +1,7 @@
#!/bin/awk -f
# $Revision$, $Date$
+# TODO: "SourceXDownload" support (use given URLs if present instead of cut-down SourceX URLs)
+
function fixedsub(s1,s2,t, ind) {
# substitutes fixed strings (not regexps)
if (ind = index(t,s1)) {
@@ -16,7 +18,7 @@
return 0
}
}
-
+
function compare_ver(v1,v2) {
# compares version numbers
while (match(v1,/[a-zA-Z][0-9]|[0-9][a-zA-Z]/))
@@ -31,10 +33,10 @@
if (DEBUG) print "v2 == " v2
count=split(v1,v1a,"\.")
count2=split(v2,v2a,"\.")
-
- if (count<count2) mincount=count
+
+ if (count<count2) mincount=count
else mincount=count2
-
+
for (i=1; i<=mincount; i++) {
if (v1a[i]=="") v1a[i]=0
if (v2a[i]=="") v2a[i]=0
@@ -86,10 +88,10 @@
if (DEBUG) print "v2 == " v2
count=split(v1,v1a,"\.")
count2=split(v2,v2a,"\.")
-
- if (count<count2) mincount=count
+
+ if (count<count2) mincount=count
else mincount=count2
-
+
for (i=1; i<=mincount; i++) {
if (v1a[i]=="") v1a[i]=0
if (v2a[i]=="") v2a[i]=0
@@ -136,64 +138,82 @@
return 0
}
-function get_links(url, errno,link,oneline,retval,odp,tmpfile) {
+function get_links(url, errno,link,oneline,retval,odp,wholeodp,lowerodp,tmpfile) {
# get all <A HREF=..> tags from specified URL
"mktemp /tmp/XXXXXX" | getline tmpfile
close("mktemp /tmp/XXXXXX")
-
+
+ if (url ~ /^http:\/\/(download|dl).(sf|sourceforge).net\//) {
+ gsub("^http://(download|dl).(sf|sourceforge).net/", "", url)
+ url = "http://prdownloads.sourceforge.net/" substr(url, 1, 1) "/" substr(url, 1, 2) "/" url
+ if (DEBUG) print "sf url, mungled url to: " url
+ }
+
if (DEBUG) print "Retrieving: " url
errno=system("wget -O - \"" url "\" -t 3 -T 300 --passive-ftp > " tmpfile " 2>/dev/null" )
-
+
if (errno==0) {
while (getline oneline < tmpfile)
- odp=(odp " " oneline)
- if ( DEBUG ) print "Odpowiedz: " odp
+ wholeodp=(wholeodp " " oneline)
+ if ( DEBUG ) print "Response: " wholeodp
}
-
+
close(tmpfile)
system("rm -f " tmpfile)
urldir=url;
sub(/[^\/]+$/,"",urldir)
+
if ( errno==0) {
- while ((tolower(odp) ~ /<frame[ \t]/)||(tolower(odp) ~ /href=/)) {
- if (tolower(odp) ~ /<frame[ \t]/) {
- match(tolower(odp),/<frame[ \t][^>]*>/)
- ramka=substr(odp,RSTART,RLENGTH)
- odp=substr(odp,RSTART+RLENGTH)
- sub(/[sS][rR][cC]=[ \t]+/,"src=",ramka);
- match(tolower(ramka),/src="[^"]+"/)
- newurl=substr(ramka,RSTART+5,RLENGTH-6)
- if (DEBUG) print "Ramka: " newurl
+ while (match(wholeodp, /<([aA]|[fF][rR][aA][mM][eE])[ \t][^>]*>/) > 0) {
+ odp=substr(wholeodp,RSTART,RLENGTH);
+ wholeodp=substr(wholeodp,RSTART+RLENGTH);
+
+ lowerodp=tolower(odp);
+ if (lowerodp ~ /<frame[ \t]/) {
+ sub(/[sS][rR][cC]=[ \t]*/,"src=",odp);
+ match(odp,/src="[^"]+"/)
+ newurl=substr(odp,RSTART+5,RLENGTH-6)
+ if (DEBUG) print "Frame: " newurl
if (newurl !~ /\//) {
newurl=(urldir newurl)
- if (DEBUG) print "Ramka->: " newurl
+ if (DEBUG) print "Frame->: " newurl
}
retval=(retval " " get_links(newurl))
- } else if (tolower(odp) ~ /href=[ \t]*"[^"]+"/) {
- sub(/[hH][rR][eE][fF]=[ \t]+/,"href=",odp)
- match(tolower(odp),/href="[^"]+"/)
+ } else if (lowerodp ~ /href=[ \t]*"[^"]*"/) {
+ sub(/[hH][rR][eE][fF]=[ \t]*"/,"href=\"",odp)
+ match(odp,/href="[^"]*"/)
+ link=substr(odp,RSTART,RLENGTH)
+ odp=substr(odp,1,RSTART) substr(odp,RSTART+RLENGTH)
+ link=substr(link,7,length(link)-7)
+ retval=(retval " " link)
+ if (DEBUG) print "href(\"\"): " link
+ } else if (lowerodp ~ /href=[ \t]*'[^']*'/) {
+ sub(/[hH][rR][eE][fF]=[ \t]*'/,"href='",odp)
+ match(odp,/href='[^']*'/)
link=substr(odp,RSTART,RLENGTH)
- odp=substr(odp,RSTART+RLENGTH)
+ odp=substr(odp,1,RSTART) substr(odp,RSTART+RLENGTH)
link=substr(link,7,length(link)-7)
retval=(retval " " link)
- } else if (tolower(odp) ~ /href=[ \t]*[^ \t>]+/) {
- sub(/[hH][rR][eE][fF]=[ \t]+/,"href=",odp)
- match(tolower(odp),/href=[^ \t>]+/)
+ if (DEBUG) print "href(''): " link
+ } else if (lowerodp ~ /href=[ \t]*[^ \t>]*/) {
+ sub(/[hH][rR][eE][fF]=[ \t]*/,"href=",odp)
+ match(odp,/href=[^ \t>]*/)
link=substr(odp,RSTART,RLENGTH)
- odp=substr(odp,RSTART+RLENGTH)
+ odp=substr(odp,1,RSTART) substr(odp,RSTART+RLENGTH)
link=substr(link,6,length(link)-5)
retval=(retval " " link)
+ if (DEBUG) print "href(): " link
} else {
- retval=(retval " INTERNAL_ERROR")
- break
+ # <a ...> but not href - skip
+ if (DEBUG) print "skipping <a > without href: " odp
}
}
} else {
retval=("WGET ERROR: " errno)
}
-
-
- if (DEBUG) print "Zwracane: " retval
+
+
+ if (DEBUG) print "Returning: " retval
return retval
}
@@ -224,9 +244,9 @@
mname=fields[3]
prefix=substr(url,1,length(origin))
if (prefix==origin){
- if ( DEBUG ) print "Mirror znaleziony na " mname
+ if ( DEBUG ) print "Mirror fount at " mname
close("mirrors")
- return mirror substr(url,length(origin))
+ return mirror substr(url,length(origin)+1)
}
}
}
@@ -236,10 +256,10 @@
function process_source(number,lurl,name,version) {
# fetches file list, and compares version numbers
- if ( DEBUG ) print "Przetwarzam " lurl
+ if ( DEBUG ) print "Processing " lurl
if ( index(lurl,version)==0 ) {
- if (DEBUG) print "Nie ma numeru wersji."
+ if (DEBUG) print "There is no version number."
return 0
}
@@ -256,26 +276,26 @@
dir=substr(dir,1,index(dir,version)-1)
sub("[^/]*$","",dir)
sub("(\.tar\.(bz|bz2|gz)|zip)$","",filename)
- if ( DEBUG ) print "Sprawdze katalog: " dir
- if ( DEBUG ) print "i plik: " filename
+ if ( DEBUG ) print "Will check a directory: " dir
+ if ( DEBUG ) print "and a file: " filename
}
filenameexp=filename
gsub("\+","\\+",filenameexp)
sub(version,"[A-Za-z0-9.]+",filenameexp)
gsub("\.","\\.",filenameexp)
- if ( DEBUG ) print "Wzorzec: " filenameexp
+ if ( DEBUG ) print "Expression: " filenameexp
match(filename,version)
prever=substr(filename,1,RSTART-1)
postver=substr(filename,RSTART+RLENGTH)
- if ( DEBUG ) print "Przed numerkiem: " prever
- if ( DEBUG ) print "i po: " postver
- newurl=find_mirror(acc "://" host dir)
+ if ( DEBUG ) print "Before number: " prever
+ if ( DEBUG ) print "and after: " postver
+ newurl=find_mirror(acc "://" host dir)
#print acc "://" host dir
#newurl=url[1]"://"url[2]url[3]url[4]
#newurl=acc "://" host dir filename
- if ( DEBUG ) print "Zaglądam na " newurl
-
+ if ( DEBUG ) print "Looking at " newurl
+
references=0
finished=0
oldversion=version
@@ -283,27 +303,27 @@
if( odp ~ "ERROR: ") {
print name "(" number ") " odp
} else {
- if (DEBUG) print "Sciagnieta strona"
+ if (DEBUG) print "WebPage downloaded"
c=split(odp,linki)
for (nr=1; nr<=c; nr++) {
addr=linki[nr]
- if (DEBUG) print "Znaleziony link: " addr
+ if (DEBUG) print "Found link: " addr
if ((addr ~ filenameexp) && !(addr ~ "[-_.0-9A-Za-z~]" filenameexp)) {
match(addr,filenameexp)
newfilename=substr(addr,RSTART,RLENGTH)
- if (DEBUG) print "Hipotetyczny nowy: " newfilename
+ if (DEBUG) print "Hypothetical new: " newfilename
newfilename=fixedsub(prever,"",newfilename)
newfilename=fixedsub(postver,"",newfilename)
- if (DEBUG) print "Wersja: " newfilename
- if (newfilename ~ /\.(pkg|bin|binary)$/) continue
+ if (DEBUG) print "Version: " newfilename
+ if (newfilename ~ /\.(pkg|bin|binary|built)$/) continue
if (NUMERIC) {
if ( compare_ver_dec(version, newfilename)==1 ) {
- if (DEBUG) print "Tak, jest nowa"
+ if (DEBUG) print "Yes, there is new one"
version=newfilename
finished=1
}
} else if ( compare_ver(version, newfilename)==1 ) {
- if (DEBUG) print "Tak, jest nowa"
+ if (DEBUG) print "Yes, there is new one"
version=newfilename
finished=1
}
@@ -315,16 +335,41 @@
print name "(" number ") [OLD] " oldversion " [NEW] " version
}
}
-
+
+# upgrade check for pear package using PEAR CLI
+function pear_upgrade(name, ver) {
+ pname = name;
+ sub(/^php-pear-/, "", pname);
+
+ pearcmd = "pear remote-info " pname " | awk '/^Latest/{print $NF}'"
+ if (DEBUG) {
+ print "pearcmd: " pearcmd
+ }
+ pearcmd | getline nver
+ close(pearcmd)
+
+ if (compare_ver(ver, nver)) {
+ print name " [OLD] " ver " [NEW] " nver
+ } else {
+ print name " seems ok: " ver
+ }
+
+ return
+}
+
function process_data(name,ver,rel,src) {
+ if (name ~ /^php-pear-/) {
+ return pear_upgrade(name, ver);
+ }
+
# this function checks if substitutions were valid, and if true:
# processes each URL and tries to get current file list
for (i in src) {
if ( src[i] !~ /%{.*}/ && src[i] !~ /%[A-Za-z0-9_]/ ) {
- if ( DEBUG ) print "Zrodlo: " src[i]
+ if ( DEBUG ) print "Source: " src[i]
process_source(i,src[i],name,ver)
} else {
- print FNAME ":" i ": niemozliwe podstawienie: " src[i]
+ print FNAME ":" i ": impossible substitution: " src[i]
}
}
}
@@ -341,7 +386,7 @@
}
if (ARGC>=3 && ARGV[2]=="-n") {
NUMERIC=1
- for (i=3; i<ARGC; i++) ARGV[i-1]=ARGV[i]
+ for (i=3; i<ARGC; i++) ARGV[i-1]=ARGV[i]
ARGC=ARGC-1
}
}
================================================================
---- CVS-web:
http://cvs.pld-linux.org/SOURCES/pldnotify.awk?r1=1.6&r2=1.7&f=u
More information about the pld-cvs-commit
mailing list