PERFORCE change 149185 for review
Gabor Kovesdan
gabor at FreeBSD.org
Thu Sep 4 11:27:31 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=149185
Change 149185 by gabor at gabor_server on 2008/09/04 11:27:30
- Use sys/queue.h to implement queue functions
- Fix a bug
Submitted by: ed
Affected files ...
.. //depot/projects/soc2008/gabor_textproc/grep/Makefile#14 edit
.. //depot/projects/soc2008/gabor_textproc/grep/grep.h#42 edit
.. //depot/projects/soc2008/gabor_textproc/grep/queue.c#7 edit
.. //depot/projects/soc2008/gabor_textproc/grep/util.c#75 edit
Differences ...
==== //depot/projects/soc2008/gabor_textproc/grep/Makefile#14 (text+ko) ====
==== //depot/projects/soc2008/gabor_textproc/grep/grep.h#42 (text+ko) ====
@@ -136,7 +136,6 @@
void printline(struct str *line, int sep, regmatch_t *matches, int m);
/* queue.c */
-void initqueue(void);
void enqueue(struct str *x);
void printqueue(void);
void clearqueue(void);
==== //depot/projects/soc2008/gabor_textproc/grep/queue.c#7 (text+ko) ====
@@ -40,73 +40,60 @@
#endif /* not lint */
#include <sys/param.h>
+#include <sys/queue.h>
#include <stdlib.h>
#include <string.h>
#include "grep.h"
-struct queue {
- struct queue *next;
- struct str data;
+struct qentry {
+ STAILQ_ENTRY(qentry) list;
+ struct str data;
};
-static struct queue *q_head, *q_tail;
-static int count;
+static STAILQ_HEAD(, qentry) queue = STAILQ_HEAD_INITIALIZER(queue);
+static int count;
-static struct queue *dequeue(void);
-
-void
-initqueue(void)
-{
- q_head = q_tail = NULL;
-}
+static struct qentry *dequeue(void);
void
enqueue(struct str *x)
{
- struct queue *item;
+ struct qentry *item;
- item = grep_malloc(sizeof(struct queue));
+ item = grep_malloc(sizeof(struct qentry));
item->data.dat = grep_malloc(sizeof(char) * x->len);
item->data.len = x->len;
item->data.line_no = x->line_no;
item->data.off = x->off;
memcpy(item->data.dat, x->dat, x->len);
item->data.file = x->file;
- item->next = NULL;
- if (!q_head) {
- q_head = q_tail = item;
- } else {
- q_tail->next = item;
- q_tail = item;
- }
+ STAILQ_INSERT_TAIL(&queue, item, list);
if (++count > Bflag)
free(dequeue());
}
-static struct queue *
+static struct qentry *
dequeue(void)
{
- struct queue *item;
+ struct qentry *item;
- if (q_head == NULL)
+ item = STAILQ_FIRST(&queue);
+ if (item == NULL)
return (NULL);
+ STAILQ_REMOVE_HEAD(&queue, list);
--count;
- item = q_head;
- q_head = item->next;
- if (q_head == NULL)
- q_tail = NULL;
return (item);
}
void
printqueue(void)
{
- struct queue *item;
+ struct qentry *item;
while ((item = dequeue()) != NULL) {
printline(&item->data, '-', (regmatch_t *)NULL, 0);
@@ -117,7 +104,7 @@
void
clearqueue(void)
{
- struct queue *item;
+ struct qentry *item;
while ((item = dequeue()) != NULL)
free(item);
==== //depot/projects/soc2008/gabor_textproc/grep/util.c#75 (text+ko) ====
@@ -175,8 +175,6 @@
tail = 0;
ln.off = -1;
- if (Bflag > 0)
- initqueue();
for (c = 0; c == 0 || !(lflag || qflag); ) {
ln.off += ln.len + 1;
if ((ln.dat = grep_fgetln(f, &ln.len)) == NULL) {
@@ -293,7 +291,7 @@
size = mbstowcs(NULL, l->dat, pmatch.rm_so);
- if (size = -1)
+ if (size == -1)
r = REG_NOMATCH;
else {
wbegin = grep_malloc(size);
More information about the p4-projects
mailing list