version 1.29, 2006/03/16 04:04:57 |
version 1.30, 2006/03/17 08:51:45 |
|
|
|
|
static int rlog_file(const char *, const char *); |
static int rlog_file(const char *, const char *); |
static void rlog_rev_print(struct rcs_delta *); |
static void rlog_rev_print(struct rcs_delta *); |
static char **rlog_strsplit(char *, const char *); |
|
|
|
#define REVSEP "----------------------------" |
#define REVSEP "----------------------------" |
#define REVEND \ |
#define REVEND \ |
|
|
/* if locker is empty, no need to go further. */ |
/* if locker is empty, no need to go further. */ |
if (rdp->rd_locker == NULL) |
if (rdp->rd_locker == NULL) |
return; |
return; |
largv = rlog_strsplit(llist, ","); |
largv = cvs_strsplit(llist, ","); |
for (i = 0; largv[i] != NULL; i++) { |
for (i = 0; largv[i] != NULL; i++) { |
if (strcmp(rdp->rd_locker, largv[i]) == 0) { |
if (strcmp(rdp->rd_locker, largv[i]) == 0) { |
found++; |
found++; |
|
|
} |
} |
/* -sstates */ |
/* -sstates */ |
if (slist != NULL) { |
if (slist != NULL) { |
sargv = rlog_strsplit(slist, ","); |
sargv = cvs_strsplit(slist, ","); |
for (i = 0; sargv[i] != NULL; i++) { |
for (i = 0; sargv[i] != NULL; i++) { |
if (strcmp(rdp->rd_state, sargv[i]) == 0) { |
if (strcmp(rdp->rd_state, sargv[i]) == 0) { |
found++; |
found++; |
|
|
/* -w[logins] */ |
/* -w[logins] */ |
if (wflag == 1) { |
if (wflag == 1) { |
if (wlist != NULL) { |
if (wlist != NULL) { |
wargv = rlog_strsplit(wlist, ","); |
wargv = cvs_strsplit(wlist, ","); |
for (i = 0; wargv[i] != NULL; i++) { |
for (i = 0; wargv[i] != NULL; i++) { |
if (strcmp(rdp->rd_author, wargv[i]) == 0) { |
if (strcmp(rdp->rd_author, wargv[i]) == 0) { |
found++; |
found++; |
|
|
rdp->rd_date.tm_min, rdp->rd_date.tm_sec, |
rdp->rd_date.tm_min, rdp->rd_date.tm_sec, |
rdp->rd_author, rdp->rd_state); |
rdp->rd_author, rdp->rd_state); |
printf("%s", rdp->rd_log); |
printf("%s", rdp->rd_log); |
} |
|
|
|
/* |
|
* rlog_strsplit() |
|
* |
|
* Split a string <str> of <sep>-separated values and allocate |
|
* an argument vector for the values found. |
|
*/ |
|
static char ** |
|
rlog_strsplit(char *str, const char *sep) |
|
{ |
|
char **argv, **nargv; |
|
char *cp, *p; |
|
int i = 0; |
|
|
|
cp = xstrdup(str); |
|
argv = (char **)xmalloc((i+1) * sizeof(char *)); |
|
|
|
while ((p = strsep(&cp, sep)) != NULL) { |
|
argv[i++] = p; |
|
nargv = (char **)xrealloc((void *)argv, (i+1) * sizeof(char *)); |
|
argv = nargv; |
|
} |
|
argv[i] = NULL; |
|
|
|
return (argv); |
|
} |
} |