mercurial/mpatch.h
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Mon, 13 Mar 2017 04:06:36 +0900
changeset 31370 8a17c541177f
parent 29761 155f0cc3f813
child 34800 761355833867
permissions -rw-r--r--
py3: add "b" prefix to string literals related to module policy String literals without explicit prefix in __init__.py and policy.py are treated as unicode object on Python3, because these modules are loaded before setup of our specific code transformation (the later module is imported at the beginning of __init__.py). BTW, "modulepolicy" in __init__.py is initialized by "policy.policy". This causes issues below; - checking "policy" value in other modules causes unintentional result For example, "b'py' not in (u'c', u'py')" returns True unintentionally on Python3. - writing "policy" out fails at conversion from unicode to bytes 62939e0148f1 fixed this issue for default code path, but "policy" can be overridden by HGMODULEPOLICY environment variable (it should be rare case for developer using Python3, though). This patch does: - add "b" prefix to all string literals, which are related to module policy, in modules above. - check existence of HGMODULEPOLICY, and overwrite "policy" only if it exists For simplicity, this patch omits checking "supports_bytes_environ", switching os.environ/os.environb, and so on (Yuya agreed this in personal talking)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29707
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     1
#ifndef _HG_MPATCH_H_
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     2
#define _HG_MPATCH_H_
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     3
29708
55dd12204b8e mpatch: remove dependency on Python.h in mpatch.c
Maciej Fijalkowski <fijall@gmail.com>
parents: 29707
diff changeset
     4
#define MPATCH_ERR_NO_MEM -3
55dd12204b8e mpatch: remove dependency on Python.h in mpatch.c
Maciej Fijalkowski <fijall@gmail.com>
parents: 29707
diff changeset
     5
#define MPATCH_ERR_CANNOT_BE_DECODED -2
55dd12204b8e mpatch: remove dependency on Python.h in mpatch.c
Maciej Fijalkowski <fijall@gmail.com>
parents: 29707
diff changeset
     6
#define MPATCH_ERR_INVALID_PATCH -1
55dd12204b8e mpatch: remove dependency on Python.h in mpatch.c
Maciej Fijalkowski <fijall@gmail.com>
parents: 29707
diff changeset
     7
29707
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     8
struct mpatch_frag {
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     9
	int start, end, len;
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    10
	const char *data;
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    11
};
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    12
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    13
struct mpatch_flist {
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    14
	struct mpatch_frag *base, *head, *tail;
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    15
};
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    16
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    17
int mpatch_decode(const char *bin, ssize_t len, struct mpatch_flist** res);
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    18
ssize_t mpatch_calcsize(ssize_t len, struct mpatch_flist *l);
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    19
void mpatch_lfree(struct mpatch_flist *a);
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    20
int mpatch_apply(char *buf, const char *orig, ssize_t len,
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    21
	struct mpatch_flist *l);
29708
55dd12204b8e mpatch: remove dependency on Python.h in mpatch.c
Maciej Fijalkowski <fijall@gmail.com>
parents: 29707
diff changeset
    22
struct mpatch_flist *mpatch_fold(void *bins,
55dd12204b8e mpatch: remove dependency on Python.h in mpatch.c
Maciej Fijalkowski <fijall@gmail.com>
parents: 29707
diff changeset
    23
	struct mpatch_flist* (*get_next_item)(void*, ssize_t),
55dd12204b8e mpatch: remove dependency on Python.h in mpatch.c
Maciej Fijalkowski <fijall@gmail.com>
parents: 29707
diff changeset
    24
	ssize_t start, ssize_t end);
29707
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    25
b9b9f9a92481 mpatch: split mpatch into two files
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    26
#endif