l10n: Unify the translation for '(un)expected'

Signed-off-by: Thynson <lanxingcan@gmail.com>
l10n: Improve many translation for zh_CN

Signed-off-by: Thynson <lanxingcan@gmail.com>
archive-zip: support UTF-8 paths

Set general purpose flag 11 if we encounter a path that contains
non-ASCII characters.  We assume that all paths are given as UTF-8; no
conversion is done.

The flag seems to be ignored by unzip unless we also mark the archive
entry as coming from a Unix system.  This is done by setting the field
creator_version ("version made by" in the standard[1]) to 0x03NN.

The NN part represents the version of the standard supported by us, and
this patch sets it to 3f (for version 6.3) for Unix paths.  We keep
creator_version set to 0 (FAT filesystem, standard version 0) in the
non-special cases, as before.

But when we declare a file to have a Unix path, then we have to set the
file mode as well, or unzip will extract the files with the permission
set 0000, i.e. inaccessible by all.

[1] http://www.pkware.com/documents/casestudies/APPNOTE.TXT

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Add MALLOC_CHECK_ and MALLOC_PERTURB_ libc env to the test suite for detecting heap corruption

Recent versions of Linux libc (later than 5.4.23) and glibc (2.x)
include a malloc() implementation which is tunable via environment
variables. When MALLOC_CHECK_ is set, a special (less efficient)
implementation is used which is designed to be tolerant against
simple errors, such as double calls of free() with the same argument,
or overruns of a single byte (off-by-one bugs). When MALLOC_CHECK_
is set to 3, a diagnostic message is printed on stderr
and the program is aborted.

Setting the MALLOC_PERTURB_ environment variable causes the malloc
functions in libc to return memory which has been wiped and clear
memory when it is returned.
Of course this does not affect calloc which always does clear the memory.

The reason for this exercise is, of course, to find code which uses
memory returned by malloc without initializing it and code which uses
code after it is freed. valgrind can do this but it's costly to run.
The MALLOC_PERTURB_ exchanges the ability to detect problems in 100%
of the cases with speed.

The byte value used to initialize values returned by malloc is the byte
value of the environment value. The value used to clear memory is the
bitwise inverse. Setting MALLOC_PERTURB_ to zero disables the feature.

This technique can find hard to detect bugs.
It is therefore suggested to always use this flag (at least temporarily)
when testing out code or a new distribution.

But the test suite can use also valgrind(memcheck) via 'make valgrind'
or 'make GIT_TEST_OPTS="--valgrind"'.

Memcheck wraps client calls to malloc(), and puts a "red zone" on
each end of each block in order to detect access overruns.
Memcheck already detects double free() (up to the limit of the buffer
which remembers pending free()). Thus memcheck subsumes all the
documented coverage of MALLOC_CHECK_.

If MALLOC_CHECK_ is set non-zero when running memcheck, then the
overruns that might be detected by MALLOC_CHECK_ would be overruns
on the wrapped blocks which include the red zones.  Thus MALLOC_CHECK_
would be checking memcheck, and not the client.  This is not useful,
and actually is wasteful.  The only possible [documented] advantage
of using MALLOC_CHECK_ and memcheck together, would be if MALLOC_CHECK_
detected duplicate free() in more cases than memcheck because memcheck's
buffer is too small.

Therefore we don't use MALLOC_CHECK_ and valgrind(memcheck) at the
same time.

Signed-off-by: Elia Pinto <gitter.spiros@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
l10n: Update git.pot (825 new, 24 removed messages)

Generate po/git.pot from v1.7.12-437-g1084f with these i18n update(s):

 * i18n: mark more index-pack strings for translation
 * i18n: write-tree: mark parseopt strings for translation
 * i18n: verify-tag: mark parseopt strings for translation
 * i18n: verify-pack: mark parseopt strings for translation
 * i18n: update-server-info: mark parseopt strings for translation
 * i18n: update-ref: mark parseopt strings for translation
 * i18n: update-index: mark parseopt strings for translation
 * i18n: tag: mark parseopt strings for translation
 * i18n: symbolic-ref: mark parseopt strings for translation
 * i18n: show-ref: mark parseopt strings for translation
 * i18n: show-branch: mark parseopt strings for translation
 * i18n: shortlog: mark parseopt strings for translation
 * i18n: rm: mark parseopt strings for translation
 * i18n: revert, cherry-pick: mark parseopt strings for translation
 * i18n: rev-parse: mark parseopt strings for translation
 * i18n: reset: mark parseopt strings for translation
 * i18n: rerere: mark parseopt strings for translation
 * i18n: status: mark parseopt strings for translation
 * i18n: replace: mark parseopt strings for translation
 * i18n: remote: mark parseopt strings for translation
 * i18n: read-tree: mark parseopt strings for translation
 * i18n: push: mark parseopt strings for translation
 * i18n: prune: mark parseopt strings for translation
 * i18n: prune-packed: mark parseopt strings for translation
 * i18n: pack-refs: mark parseopt strings for translation
 * i18n: pack-objects: mark parseopt strings for translation
 * i18n: notes: mark parseopt strings for translation
 * i18n: name-rev: mark parseopt strings for translation
 * i18n: mv: mark parseopt strings for translation
 * i18n: mktree: mark parseopt strings for translation
 * i18n: merge: mark parseopt strings for translation
 * i18n: merge-file: mark parseopt strings for translation
 * i18n: merge-base: mark parseopt strings for translation
 * i18n: ls-tree: mark parseopt strings for translation
 * i18n: ls-files: mark parseopt strings for translation
 * i18n: log: mark parseopt strings for translation
 * i18n: init-db: mark parseopt strings for translation
 * i18n: help: mark parseopt strings for translation
 * i18n: hash-object: mark parseopt strings for translation
 * i18n: grep: mark parseopt strings for translation
 * i18n: gc: mark parseopt strings for translation
 * i18n: fsck: mark parseopt strings for translation
 * i18n: format-patch: mark parseopt strings for translation
 * i18n: for-each-ref: mark parseopt strings for translation
 * i18n: fmt-merge-msg: mark parseopt strings for translation
 * i18n: fetch: mark parseopt strings for translation
 * i18n: fast-export: mark parseopt strings for translation
 * i18n: describe: mark parseopt strings for translation
 * i18n: config: mark parseopt strings for translation
 * i18n: count-objects: mark parseopt strings for translation
 * i18n: commit: mark parseopt strings for translation
 * i18n: column: mark parseopt strings for translation
 * i18n: clone: mark parseopt strings for translation
 * i18n: clean: mark parseopt strings for translation
 * i18n: cherry: mark parseopt strings for translation
 * i18n: checkout: mark parseopt strings for translation
 * i18n: checkout-index: mark parseopt strings for translation
 * i18n: check-attr: mark parseopt strings for translation
 * i18n: cat-file: mark parseopt strings for translation
 * i18n: branch: mark parseopt strings for translation
 * i18n: blame: mark parseopt strings for translation
 * i18n: add: mark parseopt strings for translation
 * i18n: bisect--helper: mark parseopt strings for translation
 * i18n: archive: mark parseopt strings for translation
 * i18n: mark "style" in OPT_COLUMN() for translation

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
l10n: zh.CN.po: msgmerge git.pot (1142t195f630u)

Update of zh_CN.po: 1142 translated, 195 fuzzy, and 630 untranslated
messages.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Add userdiff patterns for Ada

Add Ada xfuncname and wordRegex patterns to the list of builtin
patterns.

Signed-off-by: Adrian Johnson <ajohnson@redneon.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
mailinfo: do not concatenate charset= attribute values from mime headers

"Content-type: text/plain; charset=UTF-8" header should not appear
twice in the input, but it is always better to gracefully deal with
such a case.  The current code concatenates the value to the values
we have seen previously, producing nonsense such as "utf8UTF-8".

Instead of concatenating, forget the previous value and use the last
value we see.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
make poll available for other platforms lacking it

move poll.[ch] out of compat/win32/ into compat/poll/ and adjust
Makefile with the changed paths. Adding comments to Makefile about
how/when to enable it and add logic for this

Signed-off-by: Joachim Schmitz <jojo@schmitz-digital.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
fix some win32 specific dependencies in poll.c

In order for non-win32 platforms to be able to use poll.c, #ifdef the
inclusion of two header files properly

Signed-off-by: Joachim Schmitz <jojo@schmitz-digital.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
poll() exits too early with EFAULT if 1st arg is NULL

If poll() is used as a milli-second sleep, like in help.c, by passing a NULL
in the 1st and a 0 in the 2nd arg, it exits with EFAULT.

As per Paolo Bonzini, the original author, this is a bug and to be fixed
Like in this commit, which is not to exit if the 2nd arg is 0. It got fixed
In gnulib in the same manner the other day.

Signed-off-by: Joachim Schmitz <jojo@schmitz-digital.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
make poll() work on platforms that can't recv() on a non-socket

This way it just got added to gnulib too the other day.

Signed-off-by: Joachim Schmitz <jojo@schmitz-digital.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
rebase usage: subcommands can not be combined with -i

Since 95135b0 (rebase: stricter check of standalone sub command,
2011-02-06), git-rebase has not allowed to use -i together with e.g.
--continue. Yet, when rebase started using OPTIONS_SPEC in 45e2acf
(rebase: define options in OPTIONS_SPEC, 2011-02-28), the usage message
included

	git-rebase [-i] --continue | --abort | --skip

Remove the "[-i]" from this line.

Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
rebase -i: Refactor help messages for todo file

Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
rebase -i: Teach "--edit-todo" action

This allows users to edit the todo file while they're stopped in the
middle of an interactive rebase. When this action is executed, all
comments from the original todo file are stripped, and new help messages
are appended to the end.

Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
rebase -i: Add tests for "--edit-todo"

Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
MALLOC_CHECK: various clean-ups

The most important in this change is to avoid affecting anything
when test-lib is used from perf-lib.  It also limits the effect of
the MALLOC_CHECK only to what is run inside the actual test, and
uses a fixed MALLOC_PERTURB_ in order to avoid hurting repeatability
of the tests.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
rebase -i: fix misleading error message after 'exec no-such' instruction

When the todo sheet of interactive rebase instructs to run a non-existing
command, the operation stops with the following error:

  Execution failed: no-such
  You can fix the problem, and then run

          git rebase --continue

  fatal: 'rebase' appears to be a git command, but we were not
  able to execute it. Maybe git-rebase is broken?

The reason is that the shell that attempted to run the command exits with
code 127. rebase--interactive just forwards this code to the caller (the
git wrapper). But our smart run-command infrastructure detects this
special exit code and turns it into ENOENT, which in turn is interpreted
by the git wrapper as if the external command that it just executed did
not exist. This is finally translated to the misleading last two lines in
error message cited above.

Fix it by translating the error code before it is forwarded.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Revert "archive-zip: support UTF-8 paths"

This reverts commit 2162bd8cc461d6c3a12ab81c5db5a44bf5ecabc3; a
two-patch series to replace it will follow.
archive-zip: support UTF-8 paths

Set general purpose flag 11 if we encounter a path that contains
non-ASCII characters.  We assume that all paths are given as UTF-8; no
conversion is done.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>