Intégration de la branche release-3.5.0
This commit is contained in:
		
						commit
						e00a63ea6b
					
				@ -1,3 +1,11 @@
 | 
			
		||||
## Version 3.5.0 du 26/02/2016-11:35
 | 
			
		||||
 | 
			
		||||
4648b3f awkrun: ajout de la fonction qarr()
 | 
			
		||||
81e7f9b correction de certains messages affichés
 | 
			
		||||
0ea24ec ajout de sqlcsv
 | 
			
		||||
ad06535 pu: autoriser fast-forward même en cas de modifications locales
 | 
			
		||||
1c397e8 ajout des fonctions awk cqsql(), sval(), cval(). réorganiser et clarifier la doc
 | 
			
		||||
 | 
			
		||||
## Version 3.4.2 du 10/02/2016-11:45
 | 
			
		||||
 | 
			
		||||
## Version 3.4.1 du 10/02/2016-11:45
 | 
			
		||||
 | 
			
		||||
@ -1 +1 @@
 | 
			
		||||
3.4.2
 | 
			
		||||
3.5.0
 | 
			
		||||
 | 
			
		||||
@ -1 +1 @@
 | 
			
		||||
011002001
 | 
			
		||||
011003000
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										37
									
								
								lib/ulib/awk
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								lib/ulib/awk
									
									
									
									
									
								
							@ -53,10 +53,11 @@ qval(s)
 | 
			
		||||
        --> 'here, \"there\" and '\\''everywhere'\\''.'
 | 
			
		||||
    L'alias quote_value(s) existe pour compatibilité
 | 
			
		||||
 | 
			
		||||
qsval(s)
 | 
			
		||||
sqval(s)
 | 
			
		||||
    comme qval() mais ajouter un espace avant la valeur quotée. ceci permet de
 | 
			
		||||
    construire facilement une ligne de commande, e.g.:
 | 
			
		||||
        print \"mycmd\" qsval(arg1) qsval(arg2)
 | 
			
		||||
        print \"mycmd\" sqval(arg1) sqval(arg2)
 | 
			
		||||
    L'alias qsval(s) existe pour compatibilité
 | 
			
		||||
 | 
			
		||||
qvals()
 | 
			
		||||
    quoter les valeurs \$1..\$NF pour les passer comme argument sur la ligne de
 | 
			
		||||
@ -65,10 +66,15 @@ qvals()
 | 
			
		||||
    La ligne qui est affichée pourra être évaluée avec eval dans le shell.
 | 
			
		||||
    L'alias quoted_values(s) existe pour compatibilité
 | 
			
		||||
 | 
			
		||||
qsvals(s)
 | 
			
		||||
sqvals(s)
 | 
			
		||||
    comme qvals() mais ajouter un espace avant la valeur quotée. ceci permet de
 | 
			
		||||
    construire facilement une ligne de commande, e.g.:
 | 
			
		||||
        print \"mycmd\" qsvals()
 | 
			
		||||
        print \"mycmd\" sqvals()
 | 
			
		||||
    L'alias qsvals(s) existe pour compatibilité
 | 
			
		||||
 | 
			
		||||
qarr(vs)
 | 
			
		||||
    quoter les valeurs du tableau vs pour le shell, e.g:
 | 
			
		||||
        print \"values=(\" qarr(values) \")\"
 | 
			
		||||
 | 
			
		||||
qsubrepl(s)
 | 
			
		||||
    quoter une valeur pour l'argument r des fonctions sub() et gsub(). Les
 | 
			
		||||
@ -87,10 +93,16 @@ qegrep(s)
 | 
			
		||||
 | 
			
		||||
qsql(s)
 | 
			
		||||
    quoter une valeur pour un script sql. la valeur est entourée de quotes, e.g:
 | 
			
		||||
        quote_sql(\"hello'there\")
 | 
			
		||||
        qsql(\"hello'there\")
 | 
			
		||||
        --> 'hello''there'
 | 
			
		||||
    L'alias quote_sql(s) existe pour compatibilité
 | 
			
		||||
 | 
			
		||||
cqsql(s)
 | 
			
		||||
    comme qsql() mais ajouter une virgule avant la valeur quotée. ceci permet de
 | 
			
		||||
    construire facilement une requête SQL, e.g:
 | 
			
		||||
        print \"insert into t(a, b, c) values (\" qsql(a) cqsql(b) cqsql(c) \");\"
 | 
			
		||||
        --> insert into t(a, b, c) values ('a', 'b', 'c');
 | 
			
		||||
 | 
			
		||||
unquote_mysqlcsv(s)
 | 
			
		||||
    Analyser une valeur exportée de MySQL avec mysqlcsv. Les transformations
 | 
			
		||||
    suivantes sont effectuées:
 | 
			
		||||
@ -99,6 +111,16 @@ unquote_mysqlcsv(s)
 | 
			
		||||
        \\0   --> <caractère NUL>
 | 
			
		||||
        \\\\  --> \\
 | 
			
		||||
 | 
			
		||||
sval(s)
 | 
			
		||||
    retourner la valeur s précédée d'un espace si elle est non vide, e.g:
 | 
			
		||||
        sval(\"\") --> \"\"
 | 
			
		||||
        sval(\"any\") --> \" any\"
 | 
			
		||||
 | 
			
		||||
cval(s)
 | 
			
		||||
    retourner la valeur s précédée d'une virgule si elle est non vide, e.g:
 | 
			
		||||
        sval(\"\") --> \"\"
 | 
			
		||||
        sval(\"any\") --> \",any\"
 | 
			
		||||
 | 
			
		||||
mkindices(values, indices)
 | 
			
		||||
    créer le tableau indices qui contient les indices du tableau values, de 1 à N,
 | 
			
		||||
    et retourner la valeur N. Il faudra utiliser les valeurs de cette manière:
 | 
			
		||||
@ -115,6 +137,11 @@ array_new(dest)
 | 
			
		||||
array_newsize(dest, size)
 | 
			
		||||
    créer un nouveau tableau de taille size, rempli de chaines vides
 | 
			
		||||
 | 
			
		||||
array_len(src)
 | 
			
		||||
    calculer la taille d'un tableau. length(array) a un bug sur GNUawk 3.1.5.
 | 
			
		||||
    cette fonction est plus lente, mais fonctionne sur toutes les versions de
 | 
			
		||||
    awk et GNUawk
 | 
			
		||||
 | 
			
		||||
array_copy(dest, src)
 | 
			
		||||
    faire une copie d'un tableau. Cette fonction nécessite gnuawk, puisqu'elle
 | 
			
		||||
    utilise mkindices().
 | 
			
		||||
 | 
			
		||||
@ -1863,7 +1863,6 @@ function qhtml(s) {
 | 
			
		||||
  gsub(/</, "\\<", s)
 | 
			
		||||
  return s
 | 
			
		||||
}
 | 
			
		||||
function quote_html(s) { return qhtml(s) }
 | 
			
		||||
function unquote_html(s) {
 | 
			
		||||
  gsub(/</, "<", s)
 | 
			
		||||
  gsub(/>/, ">", s)
 | 
			
		||||
@ -1875,48 +1874,53 @@ function qval(s) {'"
 | 
			
		||||
  gsub(/'/, \"'\\\\''\", s)
 | 
			
		||||
  return \"'\" s \"'\"
 | 
			
		||||
"'}
 | 
			
		||||
function quote_value(s) { return qval(s) }
 | 
			
		||||
function qsval(s) {
 | 
			
		||||
function sqval(s) {
 | 
			
		||||
  return " " qval(s)
 | 
			
		||||
}
 | 
			
		||||
function qvals(             i, line) {
 | 
			
		||||
  line = ""
 | 
			
		||||
  for (i = 1; i <= NF; i++) {
 | 
			
		||||
    if (i > 1) line = line " "
 | 
			
		||||
    line = line quote_value($i)
 | 
			
		||||
    line = line qval($i)
 | 
			
		||||
  }
 | 
			
		||||
  return line
 | 
			
		||||
}
 | 
			
		||||
function quoted_values() { return qvals() }
 | 
			
		||||
function qsvals() {
 | 
			
		||||
function sqvals() {
 | 
			
		||||
  return " " qvals()
 | 
			
		||||
}
 | 
			
		||||
function qarr(values,     i, count, line) {
 | 
			
		||||
  line = ""
 | 
			
		||||
  count = array_len(values)
 | 
			
		||||
  for (i = 1; i <= count; i++) {
 | 
			
		||||
    if (i > 1) line = line " "
 | 
			
		||||
    line = line qval(values[i])
 | 
			
		||||
  }
 | 
			
		||||
  return line
 | 
			
		||||
}
 | 
			
		||||
function qregexp(s) {
 | 
			
		||||
  gsub(/[[\\.^$*+?()|{]/, "\\\\&", s)
 | 
			
		||||
  return s
 | 
			
		||||
}
 | 
			
		||||
function quote_regexp(s) { return qregexp(s) }
 | 
			
		||||
function qsubrepl(s) {
 | 
			
		||||
  gsub(/\\/, "\\\\", s)
 | 
			
		||||
  gsub(/&/, "\\\\&", s)
 | 
			
		||||
  return s
 | 
			
		||||
}
 | 
			
		||||
function quote_subrepl(s) { return qsubrepl(s) }
 | 
			
		||||
function qgrep(s) {
 | 
			
		||||
  gsub(/[[\\.^$*]/, "\\\\&", s)
 | 
			
		||||
  return s
 | 
			
		||||
}
 | 
			
		||||
function quote_grep(s) { return qgrep(s) }
 | 
			
		||||
function qegrep(s) {
 | 
			
		||||
  gsub(/[[\\.^$*+?()|{]/, "\\\\&", s)
 | 
			
		||||
  return s
 | 
			
		||||
}
 | 
			
		||||
function quote_egrep(s) { return qegrep(s) }
 | 
			
		||||
function qsql(s) {'"
 | 
			
		||||
  gsub(/'/, \"''\", s)
 | 
			
		||||
  return \"'\" s \"'\"
 | 
			
		||||
"'}
 | 
			
		||||
function quote_sql(s) { return qsql(s) }
 | 
			
		||||
function cqsql(s) {
 | 
			
		||||
  return "," qsql(s)
 | 
			
		||||
}
 | 
			
		||||
function unquote_mysqlcsv(s) {
 | 
			
		||||
  gsub(/\\n/, "\n", s)
 | 
			
		||||
  gsub(/\\t/, "\t", s)
 | 
			
		||||
@ -1924,6 +1928,25 @@ function unquote_mysqlcsv(s) {
 | 
			
		||||
  gsub(/\\\\/, "\\", s)
 | 
			
		||||
  return s
 | 
			
		||||
}
 | 
			
		||||
function sval(s) {
 | 
			
		||||
  if (s == "") return s
 | 
			
		||||
  else return " " s
 | 
			
		||||
}
 | 
			
		||||
function cval(s) {
 | 
			
		||||
  if (s == "") return s
 | 
			
		||||
  else return "," s
 | 
			
		||||
}
 | 
			
		||||
# aliases pour compatibilité
 | 
			
		||||
function quote_html(s) { return qhtml(s) }
 | 
			
		||||
function quote_value(s) { return qval(s) }
 | 
			
		||||
function qsval(s) { return sqval(s) }
 | 
			
		||||
function quoted_values() { return qvals() }
 | 
			
		||||
function qsvals(s) { return sqvals(s) }
 | 
			
		||||
function quote_regexp(s) { return qregexp(s) }
 | 
			
		||||
function quote_subrepl(s) { return qsubrepl(s) }
 | 
			
		||||
function quote_grep(s) { return qgrep(s) }
 | 
			
		||||
function quote_egrep(s) { return qegrep(s) }
 | 
			
		||||
function quote_sql(s) { return qsql(s) }
 | 
			
		||||
 | 
			
		||||
function __parse_date_fr(date,            parts, y, m, d) {
 | 
			
		||||
  if (match(date, /([0-9][0-9]?)\/([0-9][0-9]?)\/([0-9][0-9][0-9][0-9])/, parts)) {
 | 
			
		||||
@ -1970,6 +1993,14 @@ function date_add(date, nbdays,         serial) {
 | 
			
		||||
  return strftime("%d/%m/%Y", serial)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function mkindices(values, indices,        i, j) {
 | 
			
		||||
  array_new(indices)
 | 
			
		||||
  j = 1
 | 
			
		||||
  for (i in values) {
 | 
			
		||||
    indices[j++] = int(i)
 | 
			
		||||
  }
 | 
			
		||||
  return asort(indices)
 | 
			
		||||
}
 | 
			
		||||
function array_new(dest) {
 | 
			
		||||
  dest[0] = 0 # forcer awk à considérer dest comme un tableau
 | 
			
		||||
  delete dest
 | 
			
		||||
@ -1991,14 +2022,6 @@ function array_len(values,    count, i) {
 | 
			
		||||
  }
 | 
			
		||||
  return count
 | 
			
		||||
}
 | 
			
		||||
function mkindices(values, indices,        i, j) {
 | 
			
		||||
  array_new(indices)
 | 
			
		||||
  j = 1
 | 
			
		||||
  for (i in values) {
 | 
			
		||||
    indices[j++] = int(i)
 | 
			
		||||
  }
 | 
			
		||||
  return asort(indices)
 | 
			
		||||
}
 | 
			
		||||
function array_copy(dest, src,             count, indices, i) {
 | 
			
		||||
  array_new(dest)
 | 
			
		||||
  count = mkindices(src, indices)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										11
									
								
								lib/ulib/vcs
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								lib/ulib/vcs
									
									
									
									
									
								
							@ -466,16 +466,9 @@ function git_update() {
 | 
			
		||||
        remote="$(git_get_branch_remote "$branch")"
 | 
			
		||||
        rbranch="$(git_get_branch_rbranch "$branch" "$remote")"
 | 
			
		||||
        pbranch="${rbranch#refs/remotes/}"
 | 
			
		||||
        if [ -z "$remote" -o -z "$rbranch" ]; then
 | 
			
		||||
            echo "Note: there are uncommitted local changes"
 | 
			
		||||
            return 0
 | 
			
		||||
        elif git_is_ancestor "$branch" "$rbranch"; then
 | 
			
		||||
            echo "* Uncommitted changes, unwilling to fast-forward local branch $branch from $pbranch"
 | 
			
		||||
        else
 | 
			
		||||
            echo "* Cannot fast-forward local branch $branch from $pbranch"
 | 
			
		||||
            echo "  (and there are uncommitted local changes)"
 | 
			
		||||
        if git merge -q --ff-only "$rbranch"; then
 | 
			
		||||
            echo "* There are uncommitted local changes: only CURRENT branch were updated"
 | 
			
		||||
        fi
 | 
			
		||||
        echo "Try to merge manually with: git merge $pbranch"
 | 
			
		||||
        return 0
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user