[2/3] cmd/tests: Factor out keyword recognition in test runner

Frédéric Delanoy frederic.delanoy at gmail.com
Fri Jun 24 08:51:20 CDT 2011


---
 programs/cmd/tests/batch.c |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/programs/cmd/tests/batch.c b/programs/cmd/tests/batch.c
index 5d2668d..946d9d3 100644
--- a/programs/cmd/tests/batch.c
+++ b/programs/cmd/tests/batch.c
@@ -135,6 +135,12 @@ static DWORD map_file(const char *file_name, const char **ret)
     return size;
 }
 
+static inline BOOL command_found(const char *cmd_name, const char *line_ptr, const char *line_end)
+{
+    const size_t cmd_size = strlen(cmd_name);
+    return (line_ptr + cmd_size <= line_end) && !strncmp(line_ptr, cmd_name, cmd_size);
+}
+
 static const char *compare_line(const char *out_line, const char *out_end, const char *exp_line,
         const char *exp_end)
 {
@@ -147,8 +153,7 @@ static const char *compare_line(const char *out_line, const char *out_end, const
 
     while(exp_ptr < exp_end) {
         if(*exp_ptr == '@') {
-            if(exp_ptr+strlen(pwd_cmd) <= exp_end
-                    && !strncmp(exp_ptr, pwd_cmd, strlen(pwd_cmd))) {
+            if(command_found(pwd_cmd, exp_ptr, exp_end)) {
                 exp_ptr += strlen(pwd_cmd);
                 if(out_end-out_ptr < workdir_len
                    || (CompareStringA(LOCALE_SYSTEM_DEFAULT, NORM_IGNORECASE, out_ptr, workdir_len,
@@ -158,15 +163,13 @@ static const char *compare_line(const char *out_line, const char *out_end, const
                     out_ptr += workdir_len;
                     continue;
                 }
-            }else if(exp_ptr+strlen(space_cmd) <= exp_end
-                    && !strncmp(exp_ptr, space_cmd, strlen(space_cmd))) {
+            }else if(command_found(space_cmd, exp_ptr, exp_end)) {
                 exp_ptr += strlen(space_cmd);
                 ok(*out_ptr == ' ', "expected space\n");
                 if(out_ptr < out_end && *out_ptr == ' ')
                     out_ptr++;
                 continue;
-            }else if(exp_ptr+strlen(or_broken_cmd) <= exp_end
-                     && !strncmp(exp_ptr, or_broken_cmd, strlen(or_broken_cmd))) {
+            }else if(command_found(or_broken_cmd, exp_ptr, exp_end)) {
                 exp_ptr = exp_end;
                 continue;
             }
@@ -180,6 +183,7 @@ static const char *compare_line(const char *out_line, const char *out_end, const
 
             while(exp_ptr+strlen(or_broken_cmd) <= exp_end && strncmp(exp_ptr,or_broken_cmd, strlen(or_broken_cmd)))
                 exp_ptr++;
+
             if(!exp_ptr)
                 return err;
 
-- 
1.7.5.4




More information about the wine-patches mailing list