Module: wine
Branch: master
Commit: 23401183166283ecb8763b14a7d8a515e9be9e72
URL: http://source.winehq.org/git/wine.git/?a=commit;h=23401183166283ecb8763b14a…
Author: Frédéric Delanoy <frederic.delanoy(a)gmail.com>
Date: Fri Apr 9 01:33:52 2010 +0200
wineserver: Fix French manpage.
---
server/wineserver.fr.man.in | 53 ++++++++++++++++++++++---------------------
1 files changed, 27 insertions(+), 26 deletions(-)
diff --git a/server/wineserver.fr.man.in b/server/wineserver.fr.man.in
index 4726fef..c48f734 100644
--- a/server/wineserver.fr.man.in
+++ b/server/wineserver.fr.man.in
@@ -1,6 +1,6 @@
.\" -*- nroff -*-
-.TH WINESERVER 1 "Janvier 2008" "@PACKAGE_STRING@" "Windows sur Unix"
-.SH NAME
+.TH WINESERVER 1 "avril 2010" "@PACKAGE_STRING@" "Windows sur Unix"
+.SH NOM
wineserver \- le serveur Wine
.SH SYNOPSIS
.BI wineserver\ [options]
@@ -12,8 +12,8 @@ que le noyau de Windows fournit sous Windows.
.B wineserver
est normalement exécuté automatiquement lorsque \fBwine\fR(1) est démarré,
vous ne devriez donc pas vous en préoccuper. Néanmoins, dans certains cas, il
-peut être utile de démarrer \fBwineserver\fR explicitement avec des options différentes,
-comme expliqué ci-dessous.
+peut être utile de démarrer \fBwineserver\fR explicitement avec certaines options,
+comme expliqué ci-après.
.SH OPTIONS
.TP
\fB\-d\fI[n]\fR, \fB--debug\fI[=n]
@@ -23,7 +23,7 @@ Définit le niveau de débogage à
pour un débogage plus important. Si
.I n
n'est pas spécifié, la valeur par défaut est 1. La sortie de débogage sera
-stderr. \fBwine\fR(1) définit automatiquement le niveau de débogage lorsqu'il
+stderr. \fBwine\fR(1) spécifie automatiquement le niveau de débogage lorsqu'il
démarre \fBwineserver\fR si l'option +server est indiquée dans la variable
WINEDEBUG.
.TP
@@ -37,19 +37,20 @@ Affiche un message d'aide.
\fB\-k\fI[n]\fR, \fB--kill\fI[=n]
Termine le
.B wineserver
-actuellement exécuté en envoyant optionnellement un signal \fIn\fR. Si
+actuellement exécuté en envoyant facultativement un signal \fIn\fR. Si
aucun signal n'est spécifié, un signal SIGINT est envoyé en premier,
puis un signal SIGKILL. L'instance de \fBwineserver\fR qui est
terminée est sélectionnée en fonction de la variable d'environnement
WINEPREFIX.
.TP
\fB\-p\fI[n]\fR, \fB--persistent\fI[=n]
-Spécifie le délai de persistance de \fBwineserver\fR ; c'est-à-dire le
+Spécifie le délai de persistance de \fBwineserver\fR, c'est-à-dire le
temps pendant lequel le serveur continuera de tourner après que tous les
-processus clients auront été terminés. Ceci évite le coût inhérent à l'arrêt
-puis au redémarrage du serveur lorsque des programmes sont lancés successivement.
-Le délai d'attente \fIn\fR est exprimé en secondes, la valeur par défaut est
-3 secondes. Si \fIn\fR n'est pas spécifié, le serveur reste en permanence.
+processus clients se sont terminés. Ceci évite le coût inhérent à l'arrêt
+puis au redémarrage du serveur lorsque des programmes sont lancés successivement
+à intervalle rapproché.
+Le délai d'attente \fIn\fR est exprimé en secondes (3 secondes par défaut).
+Si \fIn\fR n'est pas spécifié, le serveur s'exécute indéfiniment.
.TP
.BR \-v ", " --version
Affiche les informations sur la version et quitte.
@@ -61,27 +62,27 @@ actuellement exécuté se termine.
.SH VARIABLES D'ENVIRONNEMENT
.TP
.I WINEPREFIX
-Si défini, le contenu de cette variable est pris comme le nom du répertoire où
+Si définie, le contenu de cette variable est pris comme le nom du répertoire où
.B wineserver
stocke ses données (la valeur par défaut est \fI$HOME/.wine\fR). Tous les processus
.B wine
-utilisent le même
+utilisant le même
.B wineserver
-(c'est-à-dire le même utilisateur) et partages certains éléments comme la base de registre,
+(c'est-à-dire pour un même utilisateur) partagent certains éléments comme la base de registre,
la mémoire partagée et les objets du noyau.
-En définissant
+En donnant à
.I WINEPREFIX
-à une valeur différente pour différent processus Wine, il est possible d'exécuter plusieurs
-sessions de Wine indépendantes.
+une valeur spécifique pour différents processus Wine, il est possible d'exécuter plusieurs
+sessions de Wine totalement indépendantes.
.TP
.I WINESERVER
Spécifie le chemin et le nom de l'exécutable
.B wineserver
-qui sera lancé automatiquement par \fBwine\fR. S'il n'est pas défini,
-\fBwine\fR essaiera de charger
-.IR @bindir@/wineserver ,
-et, s'il n'existe pas, il cherchera alors un fichier nommé
-\fIwineserver\fR dans le chemin et dans quelques autres emplacements potentiels.
+qui sera lancé automatiquement par \fBwine\fR.
+Si cette variable n'est pas définie, Wine essaiera de charger
+.I @bindir@/wineserver
+ou, à défaut, un fichier nommé
+\fIwineserver\fR dans le chemin système ou quelques autres emplacements potentiels.
.SH FICHIERS
.TP
.B ~/.wine
@@ -89,9 +90,9 @@ Répertoire contenant les données utilisateur gérées par
.BR wine .
.TP
.BI /tmp/.wine- uid
-Le répertoire contenant le connecteur Unix et le fichier cadenas.
-Ces fichiers sont créés dans un sous-répertoire généré depuis le répertoire
-WINEPREFIX et des numéros inode.
+Le répertoire contenant le socket de serveur Unix et le fichier de verrouillage.
+Ces fichiers sont créés dans un sous-répertoire dont le nom est généré à partir
+des périphérique et numéros d'inodes du répertoire WINEPREFIX.
.SH AUTEURS
L'auteur originel de
.B wineserver
@@ -99,7 +100,7 @@ est Alexandre Julliard. Beaucoup d'autres personnes ont contribué de nouvelles
et des correction d'anomalies. Référez-vous au fichier Changelog dans la distribution de Wine
pour les détails complets.
.SH ANOMALIES
-Si vous rencontrez une anomalie, veuillez soumettre un rapport d'anomalie sur
+Si vous détectez une anomalie, veuillez soumettre un rapport d'anomalie sur
.UR http://bugs.winehq.org
.BR http://bugs.winehq.org .
.UE
Module: wine
Branch: master
Commit: 2becd3349de5d7b4f1f1a428e5bc08294ba0f8a6
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2becd3349de5d7b4f1f1a428e…
Author: Eric Pouech <eric.pouech(a)orange.fr>
Date: Mon Apr 12 21:18:25 2010 +0200
winedbg: Merge pointer deref and array index functions into a single one.
---
programs/winedbg/debugger.h | 1 -
programs/winedbg/expr.c | 4 +-
programs/winedbg/memory.c | 2 +-
programs/winedbg/types.c | 86 ++++++++++++++++++------------------------
programs/winedbg/winedbg.c | 2 -
5 files changed, 40 insertions(+), 55 deletions(-)
diff --git a/programs/winedbg/debugger.h b/programs/winedbg/debugger.h
index b38d6bd..bb3c131 100644
--- a/programs/winedbg/debugger.h
+++ b/programs/winedbg/debugger.h
@@ -434,7 +434,6 @@ extern int print_types(void);
extern long int types_extract_as_integer(const struct dbg_lvalue*);
extern LONGLONG types_extract_as_longlong(const struct dbg_lvalue*, unsigned* psize);
extern void types_extract_as_address(const struct dbg_lvalue*, ADDRESS64*);
-extern BOOL types_deref(const struct dbg_lvalue* value, struct dbg_lvalue* result);
extern BOOL types_udt_find_element(struct dbg_lvalue* value, const char* name, long int* tmpbuf);
extern BOOL types_array_index(const struct dbg_lvalue* value, int index, struct dbg_lvalue* result);
extern BOOL types_get_info(const struct dbg_type*, IMAGEHLP_SYMBOL_TYPE_INFO, void*);
diff --git a/programs/winedbg/expr.c b/programs/winedbg/expr.c
index 6b8c46f..66cd701 100644
--- a/programs/winedbg/expr.c
+++ b/programs/winedbg/expr.c
@@ -375,7 +375,7 @@ struct dbg_lvalue expr_eval(struct expr* exp)
break;
case EXPR_TYPE_PSTRUCT:
exp1 = expr_eval(exp->un.structure.exp1);
- if (exp1.type.id == dbg_itype_none || !types_deref(&exp1, &rtn) ||
+ if (exp1.type.id == dbg_itype_none || !types_array_index(&exp1, 0, &rtn) ||
rtn.type.id == dbg_itype_none)
RaiseException(DEBUG_STATUS_BAD_TYPE, 0, 0, NULL);
if (!types_udt_find_element(&rtn, exp->un.structure.element_name,
@@ -626,7 +626,7 @@ struct dbg_lvalue expr_eval(struct expr* exp)
exp->un.unop.result = ~types_extract_as_integer(&exp1);
break;
case EXP_OP_DEREF:
- if (!types_deref(&exp1, &rtn))
+ if (!types_array_index(&exp1, 0, &rtn))
RaiseException(DEBUG_STATUS_BAD_TYPE, 0, 0, NULL);
break;
case EXP_OP_FORCE_DEREF:
diff --git a/programs/winedbg/memory.c b/programs/winedbg/memory.c
index 76a103a..6560062 100644
--- a/programs/winedbg/memory.c
+++ b/programs/winedbg/memory.c
@@ -416,7 +416,7 @@ static void print_typed_basic(const struct dbg_lvalue* lvalue)
}
break;
case SymTagPointerType:
- if (!types_deref(lvalue, &sub_lvalue))
+ if (!types_array_index(lvalue, 0, &sub_lvalue))
{
dbg_printf("Internal symbol error: unable to access memory location %p",
memory_to_linear_addr(&lvalue->addr));
diff --git a/programs/winedbg/types.c b/programs/winedbg/types.c
index 414bb9f..6d50c81 100644
--- a/programs/winedbg/types.c
+++ b/programs/winedbg/types.c
@@ -155,45 +155,6 @@ void types_extract_as_address(const struct dbg_lvalue* lvalue, ADDRESS64* addr)
}
/******************************************************************
- * types_deref
- *
- */
-BOOL types_deref(const struct dbg_lvalue* lvalue, struct dbg_lvalue* result)
-{
- struct dbg_type type = lvalue->type;
- DWORD tag;
-
- memset(result, 0, sizeof(*result));
- result->type.id = dbg_itype_none;
- result->type.module = 0;
-
- /*
- * Make sure that this really makes sense.
- */
- if (!types_get_real_type(&type, &tag) || tag != SymTagPointerType ||
- !memory_read_value(lvalue, sizeof(result->addr.Offset), &result->addr.Offset) ||
- !types_get_info(&type, TI_GET_TYPE, &result->type.id))
- return FALSE;
- result->type.module = type.module;
- result->cookie = DLV_TARGET;
- /* FIXME: this is currently buggy.
- * there is no way to tell were the deref:ed value is...
- * for example:
- * x is a pointer to struct s, x being on the stack
- * => lvalue is in debuggee, result is in debugger
- * x is a pointer to struct s, x being optimized into a reg
- * => lvalue is debugger, result is debuggee
- * x is a pointer to internal variable x
- * => lvalue is debugger, result is debuggee
- * so we force debuggee address space, because dereferencing pointers to
- * internal variables is very unlikely. A correct fix would be
- * rather large.
- */
- result->addr.Mode = AddrModeFlat;
- return TRUE;
-}
-
-/******************************************************************
* types_get_udt_element_lvalue
*
* Implement a structure derefencement
@@ -301,24 +262,32 @@ BOOL types_udt_find_element(struct dbg_lvalue* lvalue, const char* name, long in
*
* Grab an element from an array
*/
-BOOL types_array_index(const struct dbg_lvalue* lvalue, int index,
- struct dbg_lvalue* result)
+BOOL types_array_index(const struct dbg_lvalue* lvalue, int index, struct dbg_lvalue* result)
{
struct dbg_type type = lvalue->type;
DWORD tag, count;
- DWORD64 length;
+
+ memset(result, 0, sizeof(*result));
+ result->type.id = dbg_itype_none;
+ result->type.module = 0;
if (!types_get_real_type(&type, &tag)) return FALSE;
- /* Contents of array share same data (addr mode, module...) */
- *result = *lvalue;
switch (tag)
{
case SymTagArrayType:
- types_get_info(&type, TI_GET_COUNT, &count);
+ if (!types_get_info(&type, TI_GET_COUNT, &count)) return FALSE;
if (index < 0 || index >= count) return FALSE;
+ result->addr = lvalue->addr;
break;
case SymTagPointerType:
- memory_read_value(lvalue, sizeof(result->addr.Offset), &result->addr.Offset);
+ if (!memory_read_value(lvalue, be_cpu->pointer_size, &result->addr.Offset)) return FALSE;
+ result->addr.Mode = AddrModeFlat;
+ switch (be_cpu->pointer_size)
+ {
+ case 4: result->addr.Offset = (DWORD)result->addr.Offset; break;
+ case 8: break;
+ default: assert(0);
+ }
break;
default:
assert(FALSE);
@@ -326,9 +295,28 @@ BOOL types_array_index(const struct dbg_lvalue* lvalue, int index,
/*
* Get the base type, so we know how much to index by.
*/
- types_get_info(&type, TI_GET_TYPE, &result->type.id);
- types_get_info(&result->type, TI_GET_LENGTH, &length);
- result->addr.Offset += index * (DWORD)length;
+ if (!types_get_info(&type, TI_GET_TYPE, &result->type.id)) return FALSE;
+ result->type.module = type.module;
+ if (index)
+ {
+ DWORD64 length;
+ if (!types_get_info(&result->type, TI_GET_LENGTH, &length)) return FALSE;
+ result->addr.Offset += index * (DWORD)length;
+ }
+ /* FIXME: the following statement is not always true (and can lead to buggy behavior).
+ * There is no way to tell were the deref:ed value is...
+ * For example:
+ * x is a pointer to struct s, x being on the stack
+ * => lvalue is in debuggee, result is in debugger
+ * x is a pointer to struct s, x being optimized into a reg
+ * => lvalue is debugger, result is debuggee
+ * x is a pointer to internal variable x
+ * => lvalue is debugger, result is debuggee
+ * So we always force debuggee address space, because dereferencing pointers to
+ * internal variables is very unlikely. A correct fix would be
+ * rather large.
+ */
+ result->cookie = DLV_TARGET;
return TRUE;
}
diff --git a/programs/winedbg/winedbg.c b/programs/winedbg/winedbg.c
index 6ce6db4..7a37805 100644
--- a/programs/winedbg/winedbg.c
+++ b/programs/winedbg/winedbg.c
@@ -55,8 +55,6 @@
* + all computations should be made on long long
* o expr computations are in int:s
* o bitfield size is on a 4-bytes
- * + array_index and deref should be the same function (or should share the same
- * core)
* - execution:
* + set a better fix for gdb (proxy mode) than the step-mode hack
* + implement function call in debuggee