On Sun, 15 Apr 2012 at 23:09:18 +0200, Rodolfo García Peñas wrote:
> StrConcatStr concats the first and second argument with a point.
I'm not a native english speaker too, but I think you mixed "point"
with "dot" in the changelog and in the patch itself.
>
> The function char *StrConcatDot(char *a, char *b) is now
> char *StrConcatDot(char *a, char *b, Bool alwayspoint).
>
> This new argument will be used to simplify the code in next patches.
> Now:
>
> If alwayspoint is True, the point is added always,
> If alwayspoint is False, the point is added only if first and second
> argument exists
> ---
> src/funcs.h | 2 +-
> src/misc.c | 25 +++++++++++++++++++------
> src/window.c | 2 +-
> src/winspector.c | 8 +++-----
> 4 files changed, 24 insertions(+), 13 deletions(-)
>
> diff --git a/src/funcs.h b/src/funcs.h
> index e827504..e320a07 100644
> --- a/src/funcs.h
> +++ b/src/funcs.h
> @@ -79,7 +79,7 @@ int calcIntersectionArea(int x1, int y1, int w1, int h1,
> char *MakeCPPArgs(char *path);
> #endif
>
> -char * StrConcatDot(char *a, char *b);
> +char *StrConcatDot(char *a, char *b, Bool alwaysdot);
> char * ExpandOptions(WScreen *scr, char *cmdline);
> char * ShrinkString(WMFont *font, char *string, int width);
> char * FindImage(char *paths, char *file);
> diff --git a/src/misc.c b/src/misc.c
> index fd283c2..9fbc746 100644
> --- a/src/misc.c
> +++ b/src/misc.c
> @@ -1048,20 +1048,33 @@ Bool UpdateDomainFile(WDDomain * domain)
> return result;
> }
>
> -char *StrConcatDot(char *a, char *b)
> +/* Concats the first and second argument with a point.
> + * If alwayspoint is True, the point is added always,
> + * If alwayspoint is False, the point is added only
> + * if first and second argument exists
> + */
> +char *StrConcatDot(char *a, char *b, Bool alwayspoint)
> {
> - int len;
> + int len, fail = 0;
> char *str;
>
> - if (!a)
> + if (!a) {
> a = "";
> - if (!b)
> + fail++;
> + }
> +
> + if (!b) {
> b = "";
> + fail++;
> + }
>
> - len = strlen(a) + strlen(b) + 4;
> + len = strlen(a) + strlen(b) + 2 - fail + 1 ;
> str = wmalloc(len);
>
> - snprintf(str, len, "%s.%s", a, b);
> + if (!alwayspoint && fail > 0)
> + snprintf(str, len, "%s%s", a, b);
> + else
> + snprintf(str, len, "%s.%s", a, b);
>
> return str;
> }
> diff --git a/src/window.c b/src/window.c
> index f05be9e..bd02044 100644
> --- a/src/window.c
> +++ b/src/window.c
> @@ -781,7 +781,7 @@ WWindow *wManageWindow(WScreen *scr, Window window)
>
> /* // only enter here if PropGetWMClass() succeds */
> PropGetWMClass(wwin->main_window, &class, &instance);
> - buffer = StrConcatDot(instance, class);
> + buffer = StrConcatDot(instance, class, True);
>
> index = WMFindInArray(scr->fakeGroupLeaders, matchIdentifier,
> (void *)buffer);
> if (index != WANotFound) {
> diff --git a/src/winspector.c b/src/winspector.c
> index 37ae0b2..1d74313 100644
> --- a/src/winspector.c
> +++ b/src/winspector.c
> @@ -463,7 +463,7 @@ static void saveSettings(WMButton * button,
> InspectorPanel * panel)
> WDDomain *db = WDWindowAttributes;
> WMPropList *dict = db->dictionary;
> WMPropList *winDic, *appDic, *value, *key, *key2;
> - char *icon_file;
> + char *icon_file, *buffer;
> int flags = 0;
> int different = 0, different2 = 0;
>
> @@ -475,9 +475,7 @@ static void saveSettings(WMButton * button,
> InspectorPanel * panel)
> else if (WMGetButtonSelected(panel->clsRb) != 0)
> key = WMCreatePLString(wwin->wm_class);
> else if (WMGetButtonSelected(panel->bothRb) != 0) {
> - char *buffer;
> -
> - buffer = StrConcatDot(wwin->wm_instance, wwin->wm_class);
> + buffer = StrConcatDot(wwin->wm_instance, wwin->wm_class, True);
> key = WMCreatePLString(buffer);
> wfree(buffer);
> } else if (WMGetButtonSelected(panel->defaultRb) != 0) {
> @@ -639,7 +637,7 @@ static void saveSettings(WMButton * button,
> InspectorPanel * panel)
> char *class = wapp->main_window_desc->wm_class;
> char *buffer;
>
> - buffer = StrConcatDot(instance, class);
> + buffer = StrConcatDot(instance, class, True);
> key2 = WMCreatePLString(buffer);
> wfree(buffer);
>
> --
> 1.7.9.1
>
> From 8da82b5523c9429e825a074cd6ef37949e72d450 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?"Rodolfo=20Garc=C3=ADa=20Pe=C3=B1as=20(kix)"?= <[email protected]>
> Date: Sat, 14 Apr 2012 11:08:56 +0200
> Subject: [PATCH 04/16] WindowMaker: StrConcatStr inclues new argument
>
> StrConcatStr concats the first and second argument with a point.
>
> The function char *StrConcatDot(char *a, char *b) is now
> char *StrConcatDot(char *a, char *b, Bool alwayspoint).
>
> This new argument will be used to simplify the code in next patches.
> Now:
>
> If alwayspoint is True, the point is added always,
> If alwayspoint is False, the point is added only if first and second
> argument exists
> ---
> src/funcs.h | 2 +-
> src/misc.c | 25 +++++++++++++++++++------
> src/window.c | 2 +-
> src/winspector.c | 8 +++-----
> 4 files changed, 24 insertions(+), 13 deletions(-)
>
> diff --git a/src/funcs.h b/src/funcs.h
> index e827504..e320a07 100644
> --- a/src/funcs.h
> +++ b/src/funcs.h
> @@ -79,7 +79,7 @@ int calcIntersectionArea(int x1, int y1, int w1, int h1,
> char *MakeCPPArgs(char *path);
> #endif
>
> -char * StrConcatDot(char *a, char *b);
> +char *StrConcatDot(char *a, char *b, Bool alwaysdot);
> char * ExpandOptions(WScreen *scr, char *cmdline);
> char * ShrinkString(WMFont *font, char *string, int width);
> char * FindImage(char *paths, char *file);
> diff --git a/src/misc.c b/src/misc.c
> index fd283c2..9fbc746 100644
> --- a/src/misc.c
> +++ b/src/misc.c
> @@ -1048,20 +1048,33 @@ Bool UpdateDomainFile(WDDomain * domain)
> return result;
> }
>
> -char *StrConcatDot(char *a, char *b)
> +/* Concats the first and second argument with a point.
> + * If alwayspoint is True, the point is added always,
> + * If alwayspoint is False, the point is added only
> + * if first and second argument exists
> + */
> +char *StrConcatDot(char *a, char *b, Bool alwayspoint)
> {
> - int len;
> + int len, fail = 0;
> char *str;
>
> - if (!a)
> + if (!a) {
> a = "";
> - if (!b)
> + fail++;
> + }
> +
> + if (!b) {
> b = "";
> + fail++;
> + }
>
> - len = strlen(a) + strlen(b) + 4;
> + len = strlen(a) + strlen(b) + 2 - fail + 1 ;
> str = wmalloc(len);
>
> - snprintf(str, len, "%s.%s", a, b);
> + if (!alwayspoint && fail > 0)
> + snprintf(str, len, "%s%s", a, b);
> + else
> + snprintf(str, len, "%s.%s", a, b);
>
> return str;
> }
> diff --git a/src/window.c b/src/window.c
> index f05be9e..bd02044 100644
> --- a/src/window.c
> +++ b/src/window.c
> @@ -781,7 +781,7 @@ WWindow *wManageWindow(WScreen *scr, Window window)
>
> /* // only enter here if PropGetWMClass() succeds */
> PropGetWMClass(wwin->main_window, &class, &instance);
> - buffer = StrConcatDot(instance, class);
> + buffer = StrConcatDot(instance, class, True);
>
> index = WMFindInArray(scr->fakeGroupLeaders, matchIdentifier,
> (void *)buffer);
> if (index != WANotFound) {
> diff --git a/src/winspector.c b/src/winspector.c
> index 37ae0b2..1d74313 100644
> --- a/src/winspector.c
> +++ b/src/winspector.c
> @@ -463,7 +463,7 @@ static void saveSettings(WMButton * button,
> InspectorPanel * panel)
> WDDomain *db = WDWindowAttributes;
> WMPropList *dict = db->dictionary;
> WMPropList *winDic, *appDic, *value, *key, *key2;
> - char *icon_file;
> + char *icon_file, *buffer;
> int flags = 0;
> int different = 0, different2 = 0;
>
> @@ -475,9 +475,7 @@ static void saveSettings(WMButton * button,
> InspectorPanel * panel)
> else if (WMGetButtonSelected(panel->clsRb) != 0)
> key = WMCreatePLString(wwin->wm_class);
> else if (WMGetButtonSelected(panel->bothRb) != 0) {
> - char *buffer;
> -
> - buffer = StrConcatDot(wwin->wm_instance, wwin->wm_class);
> + buffer = StrConcatDot(wwin->wm_instance, wwin->wm_class, True);
> key = WMCreatePLString(buffer);
> wfree(buffer);
> } else if (WMGetButtonSelected(panel->defaultRb) != 0) {
> @@ -639,7 +637,7 @@ static void saveSettings(WMButton * button,
> InspectorPanel * panel)
> char *class = wapp->main_window_desc->wm_class;
> char *buffer;
>
> - buffer = StrConcatDot(instance, class);
> + buffer = StrConcatDot(instance, class, True);
> key2 = WMCreatePLString(buffer);
> wfree(buffer);
>
> --
> 1.7.9.1
>
--
To unsubscribe, send mail to [email protected].