[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
filename_cmp.c
From: |
Турченков Александр |
Subject: |
filename_cmp.c |
Date: |
Sun, 04 Apr 2010 02:45:01 +0400 |
Hi !
I am used arm-elf-gdb & keil toolchain & have more problems in sets breakpoints
in Eclipse IDE on Windows platform. After modify file filename_cmp.c, it's been
absent (sorry for my english).
Source code, written by me:
filename_cmp.c:
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#ifdef HAVE_STRING_H
#include <string.h>
#endif
#include "filenames.h"
#include "safe-ctype.h"
#include <alloca-conf.h>
/* #define LOC_DEBUG */
void correct_name(char * s, int len)
{
char * p = s, * plast = s;
for (;;)
{
if (p[2] == '\\')
p[2] = '/';
if (memcmp(p, "../", 3) == 0)
memcpy(p, &p[3], len -= 3);
else
break;
}
for (; len > 0 ;)
{
if (p[0] == '\\')
p[0] = '/';
if (p[0] == '/')
{
for (;;)
{
if (p[1] == '\\')
p[1] = '/';
if (p[1] == '/')
memcpy(&p[1], &p[2], len -= 1);
else
break;
}
if (p[3] == '\\')
p[3] = '/';
if (memcmp(p, "/../", 4) == 0)
{
memcpy(plast, &p[3], len -= 3);
p = plast;
if (plast != s)
plast--;
while ((plast != s) && (*plast != '/'))
plast--;
continue;
}
}
if (*p == '/')
plast = p;
else
*p = TOUPPER(*p);
p++; len--;
}
}
int
filename_cmp (const char *s1, const char *s2)
{
#ifdef LOC_DEBUG
struct ui_file;
extern struct ui_file *gdb_stdout;
extern void fputs_filtered (const char *linebuffer, struct ui_file *stream);
#endif
int s1_len = strlen(s1) + 1;
char * cs1 = (char *) alloca(s1_len);
int s2_len = strlen(s2) + 1;
char * cs2 = (char *) alloca(s2_len);
memcpy(cs1, s1, s1_len);
correct_name(cs1, s1_len);
memcpy(cs2, s2, s2_len);
correct_name(cs2, s2_len);
s1_len = strlen(cs1) + 1;
s2_len = strlen(cs2) + 1;
if (s1_len > s2_len)
memcpy(cs1, &cs1[s1_len - s2_len], s2_len);
else if (s1_len < s2_len)
memcpy(cs2, &cs2[s2_len - s1_len], s1_len);
#ifdef LOC_DEBUG
fputs_filtered ("!Check file:", gdb_stdout);
fputs_filtered (cs2, gdb_stdout);
fputs_filtered (": compare :", gdb_stdout);
fputs_filtered (cs1, gdb_stdout);
fputs_filtered (":\n", gdb_stdout);
#endif
return strcmp(cs1, cs2);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- filename_cmp.c,
Турченков Александр <=