1
1

* edit.h: Don't inclide malloc.h. Use g_malloc() and g_free()

instead.  Adjust all dependencies.
Этот коммит содержится в:
Pavel Roskin 2002-12-15 18:55:53 +00:00
родитель 77bd4c7f55
Коммит aaf569bd48
9 изменённых файлов: 254 добавлений и 190 удалений

Просмотреть файл

@ -1,5 +1,8 @@
2002-12-15 Pavel Roskin <proski@gnu.org>
* edit.h: Don't inclide malloc.h. Use g_malloc() and g_free()
instead. Adjust all dependencies.
* edit.c (edit_load_file): Merge edit_open_file(). Disable fast
loading on non-local VFS because the file size can be wrong.
(init_dynamic_edit_buffers): Split into edit_init_buffers() and

Просмотреть файл

@ -44,8 +44,7 @@ struct _book_mark *book_mark_find (WEdit * edit, int line)
struct _book_mark *p;
if (!edit->book_mark) {
/* must have an imaginary top bookmark at line -1 to make things less complicated */
edit->book_mark = malloc (sizeof (struct _book_mark));
memset (edit->book_mark, 0, sizeof (struct _book_mark));
edit->book_mark = g_malloc0 (sizeof (struct _book_mark));
edit->book_mark->line = -1;
return edit->book_mark;
}
@ -115,12 +114,14 @@ int book_mark_query_all (WEdit * edit, int line, int *c)
}
/* insert a bookmark at this line */
void book_mark_insert (WEdit * edit, int line, int c)
void
book_mark_insert (WEdit *edit, int line, int c)
{
struct _book_mark *p, *q;
p = book_mark_find (edit, line);
#if 0
if (p->line == line) { /* already exists, so just change the colour */
if (p->line == line) {
/* already exists, so just change the colour */
if (p->c != c) {
edit->force |= REDRAW_LINE;
p->c = c;
@ -129,13 +130,12 @@ void book_mark_insert (WEdit * edit, int line, int c)
}
#endif
edit->force |= REDRAW_LINE;
/* create list entry */
q = malloc (sizeof (struct _book_mark));
memset (q, 0, sizeof (struct _book_mark));
/* create list entry */
q = g_malloc0 (sizeof (struct _book_mark));
q->line = line;
q->c = c;
q->next = p->next;
/* insert into list */
/* insert into list */
q->prev = p;
if (p->next)
p->next->prev = q;
@ -159,13 +159,13 @@ int book_mark_clear (WEdit * edit, int line, int c)
p->prev->next = p->next;
if (p->next)
p->next->prev = p->prev;
free (p);
g_free (p);
break;
}
}
/* if there is only our dummy book mark left, clear it for speed */
if (edit->book_mark->line == -1 && !edit->book_mark->next) {
free (edit->book_mark);
g_free (edit->book_mark);
edit->book_mark = 0;
}
return r;
@ -186,11 +186,11 @@ void book_mark_flush (WEdit * edit, int c)
q->prev->next = q->next;
if (p)
p->prev = q->prev;
free (q);
g_free (q);
}
}
if (!edit->book_mark->next) {
free (edit->book_mark);
g_free (edit->book_mark);
edit->book_mark = 0;
}
}

Просмотреть файл

@ -232,7 +232,7 @@ edit_get_filter (const char *filename)
if (i < 0)
return 0;
l = strlen (filename);
p = malloc (strlen (all_filters[i].read) + l + 2);
p = g_malloc (strlen (all_filters[i].read) + l + 2);
sprintf (p, all_filters[i].read, filename);
return p;
}
@ -245,7 +245,7 @@ char *edit_get_write_filter (char *writename, const char *filename)
if (i < 0)
return 0;
l = strlen (writename);
p = malloc (strlen (all_filters[i].write) + l + 2);
p = g_malloc (strlen (all_filters[i].write) + l + 2);
sprintf (p, all_filters[i].write, writename);
return p;
}
@ -284,7 +284,8 @@ long edit_write_stream (WEdit * edit, FILE * f)
*/
/* inserts a file at the cursor, returns 1 on success */
int edit_insert_file (WEdit * edit, const char *filename)
int
edit_insert_file (WEdit *edit, const char *filename)
{
char *p;
if ((p = edit_get_filter (filename))) {
@ -295,21 +296,28 @@ int edit_insert_file (WEdit * edit, const char *filename)
edit_insert_stream (edit, f);
edit_cursor_move (edit, current - edit->curs1);
if (pclose (f) > 0) {
edit_error_dialog (_ ("Error"), catstrs (_ (" Error reading from pipe: "), p, " ", 0));
free (p);
edit_error_dialog (_("Error"),
catstrs (_
(" Error reading from pipe: "),
p, " ", 0));
g_free (p);
return 0;
}
} else {
edit_error_dialog (_ ("Error"), get_sys_error (catstrs (_ (" Cannot open pipe for reading: "), p, " ", 0)));
free (p);
edit_error_dialog (_("Error"),
get_sys_error (catstrs
(_
(" Cannot open pipe for reading: "),
p, " ", 0)));
g_free (p);
return 0;
}
free (p);
g_free (p);
} else {
int i, file, blocklen;
long current = edit->curs1;
unsigned char *buf;
if ((file = mc_open (filename, O_RDONLY | O_BINARY )) == -1)
if ((file = mc_open (filename, O_RDONLY | O_BINARY)) == -1)
return 0;
buf = g_malloc (TEMP_BUF_LEN);
while ((blocklen = mc_read (file, (char *) buf, TEMP_BUF_LEN)) > 0) {
@ -535,8 +543,7 @@ edit_init (WEdit *edit, int lines, int columns, const char *filename,
option_whole_chars_search = option_whole_chars_search_buf;
}
#endif /* ENABLE_NLS */
edit = g_malloc (sizeof (WEdit));
memset (edit, 0, sizeof (WEdit));
edit = g_malloc0 (sizeof (WEdit));
to_free = 1;
}
edit_purge_widget (edit);
@ -550,7 +557,7 @@ edit_init (WEdit *edit, int lines, int columns, const char *filename,
edit_set_filename (edit, filename);
edit->stack_size = START_STACK_SIZE;
edit->stack_size_mask = START_STACK_SIZE - 1;
edit->undo_stack = malloc ((edit->stack_size + 10) * sizeof (long));
edit->undo_stack = g_malloc ((edit->stack_size + 10) * sizeof (long));
if (edit_load_file (edit)) {
/* edit_load_file already gives an error message */
if (to_free)
@ -599,8 +606,7 @@ edit_clean (WEdit *edit)
g_free (edit->buffers2[j]);
}
if (edit->undo_stack)
free (edit->undo_stack);
g_free (edit->undo_stack);
g_free (edit->filename);
edit_purge_widget (edit);
@ -632,8 +638,7 @@ edit_reload (WEdit *edit, const char *filename)
WEdit *e;
int lines = edit->num_widget_lines;
int columns = edit->num_widget_columns;
e = g_malloc (sizeof (WEdit));
memset (e, 0, sizeof (WEdit));
e = g_malloc0 (sizeof (WEdit));
e->widget = edit->widget;
e->macro_i = -1;
if (!edit_init (e, lines, columns, filename, 0)) {
@ -697,10 +702,10 @@ void edit_push_action (WEdit * edit, long c,...)
if (option_max_undo < 256)
option_max_undo = 256;
if (edit->stack_size < option_max_undo) {
t = malloc ((edit->stack_size * 2 + 10) * sizeof (long));
t = g_malloc ((edit->stack_size * 2 + 10) * sizeof (long));
if (t) {
memcpy (t, edit->undo_stack, sizeof (long) * edit->stack_size);
free (edit->undo_stack);
g_free (edit->undo_stack);
edit->undo_stack = t;
edit->stack_size <<= 1;
edit->stack_size_mask = edit->stack_size - 1;
@ -823,19 +828,20 @@ static inline void edit_modification (WEdit * edit)
Returns char passed over, inserted or removed.
*/
void edit_insert (WEdit * edit, int c)
void
edit_insert (WEdit *edit, int c)
{
/* check if file has grown to large */
/* check if file has grown to large */
if (edit->last_byte >= SIZE_LIMIT)
return;
/* first we must update the position of the display window */
/* first we must update the position of the display window */
if (edit->curs1 < edit->start_display) {
edit->start_display++;
if (c == '\n')
edit->start_line++;
}
/* now we must update some info on the file and check if a redraw is required */
/* now we must update some info on the file and check if a redraw is required */
if (c == '\n') {
if (edit->book_mark)
book_mark_inc (edit, edit->curs_line);
@ -843,28 +849,31 @@ void edit_insert (WEdit * edit, int c)
edit->total_lines++;
edit->force |= REDRAW_LINE_ABOVE | REDRAW_AFTER_CURSOR;
}
/* tell that we've modified the file */
/* tell that we've modified the file */
edit_modification (edit);
/* save the reverse command onto the undo stack */
/* save the reverse command onto the undo stack */
edit_push_action (edit, BACKSPACE);
/* update markers */
/* update markers */
edit->mark1 += (edit->mark1 > edit->curs1);
edit->mark2 += (edit->mark2 > edit->curs1);
edit->last_get_rule += (edit->last_get_rule > edit->curs1);
/* add a new buffer if we've reached the end of the last one */
/* add a new buffer if we've reached the end of the last one */
if (!(edit->curs1 & M_EDIT_BUF_SIZE))
edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE] = malloc (EDIT_BUF_SIZE);
edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE] =
g_malloc (EDIT_BUF_SIZE);
/* perfprm the insertion */
edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE][edit->curs1 & M_EDIT_BUF_SIZE] = (unsigned char) c;
/* perform the insertion */
edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE][edit->
curs1 & M_EDIT_BUF_SIZE]
= (unsigned char) c;
/* update file length */
/* update file length */
edit->last_byte++;
/* update cursor position */
/* update cursor position */
edit->curs1++;
}
@ -990,7 +999,8 @@ static void memqcpy (WEdit * edit, unsigned char *dest, unsigned char *src, int
}
}
int edit_move_backward_lots (WEdit * edit, long increment)
int
edit_move_backward_lots (WEdit *edit, long increment)
{
int r, s, t;
unsigned char *p;
@ -1008,17 +1018,22 @@ int edit_move_backward_lots (WEdit * edit, long increment)
p = 0;
if (s > r) {
memqcpy (edit, edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] + t - r,
edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE] + s - r, r);
memqcpy (edit,
edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] + t - r,
edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE] + s - r,
r);
} else {
if (s) {
memqcpy (edit, edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] + t - s,
edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE], s);
memqcpy (edit,
edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] + t -
s, edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE], s);
p = edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE];
edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE] = 0;
}
memqcpy (edit, edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] + t - r,
edit->buffers1[(edit->curs1 >> S_EDIT_BUF_SIZE) - 1] + EDIT_BUF_SIZE - (r - s), r - s);
memqcpy (edit,
edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] + t - r,
edit->buffers1[(edit->curs1 >> S_EDIT_BUF_SIZE) - 1] +
EDIT_BUF_SIZE - (r - s), r - s);
}
increment -= r;
edit->curs1 -= r;
@ -1027,10 +1042,11 @@ int edit_move_backward_lots (WEdit * edit, long increment)
if (p)
edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] = p;
else
edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] = malloc (EDIT_BUF_SIZE);
edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] =
g_malloc (EDIT_BUF_SIZE);
} else {
if (p)
free (p);
g_free (p);
}
s = edit->curs1 & M_EDIT_BUF_SIZE;
@ -1043,7 +1059,8 @@ int edit_move_backward_lots (WEdit * edit, long increment)
if (r < t)
t = r;
memqcpy (edit,
edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] + EDIT_BUF_SIZE - t,
edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] +
EDIT_BUF_SIZE - t,
edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE] + s - t,
t);
if (r >= s) {
@ -1052,9 +1069,10 @@ int edit_move_backward_lots (WEdit * edit, long increment)
edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE] = 0;
}
memqcpy (edit,
edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] + EDIT_BUF_SIZE - r,
edit->buffers1[(edit->curs1 >> S_EDIT_BUF_SIZE) - 1] + EDIT_BUF_SIZE - (r - s),
r - s);
edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] +
EDIT_BUF_SIZE - r,
edit->buffers1[(edit->curs1 >> S_EDIT_BUF_SIZE) - 1] +
EDIT_BUF_SIZE - (r - s), r - s);
}
increment -= r;
edit->curs1 -= r;
@ -1063,10 +1081,10 @@ int edit_move_backward_lots (WEdit * edit, long increment)
if (p)
edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] = p;
else
edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] = malloc (EDIT_BUF_SIZE);
edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] =
g_malloc (EDIT_BUF_SIZE);
} else {
if (p)
free (p);
g_free (p);
}
}
return edit_get_byte (edit, edit->curs1);
@ -1096,7 +1114,7 @@ int edit_cursor_move (WEdit * edit, long increment)
c = edit_get_byte (edit, edit->curs1 - 1);
if (!((edit->curs2 + 1) & M_EDIT_BUF_SIZE))
edit->buffers2[(edit->curs2 + 1) >> S_EDIT_BUF_SIZE] = malloc (EDIT_BUF_SIZE);
edit->buffers2[(edit->curs2 + 1) >> S_EDIT_BUF_SIZE] = g_malloc (EDIT_BUF_SIZE);
edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE][EDIT_BUF_SIZE - (edit->curs2 & M_EDIT_BUF_SIZE) - 1] = c;
edit->curs2++;
c = edit->buffers1[(edit->curs1 - 1) >> S_EDIT_BUF_SIZE][(edit->curs1 - 1) & M_EDIT_BUF_SIZE];
@ -1121,7 +1139,7 @@ int edit_cursor_move (WEdit * edit, long increment)
c = edit_get_byte (edit, edit->curs1);
if (!(edit->curs1 & M_EDIT_BUF_SIZE))
edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE] = malloc (EDIT_BUF_SIZE);
edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE] = g_malloc (EDIT_BUF_SIZE);
edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE][edit->curs1 & M_EDIT_BUF_SIZE] = c;
edit->curs1++;
c = edit->buffers2[(edit->curs2 - 1) >> S_EDIT_BUF_SIZE][EDIT_BUF_SIZE - ((edit->curs2 - 1) & M_EDIT_BUF_SIZE) - 1];
@ -1600,19 +1618,21 @@ void edit_push_markers (WEdit * edit)
}
/* return -1 on nothing to store or error, zero otherwise */
void edit_get_selection (WEdit * edit)
void
edit_get_selection (WEdit *edit)
{
long start_mark, end_mark;
if (eval_marks (edit, &start_mark, &end_mark))
return;
if (selection_history[current_selection].len < 4096) /* large selections should not be held -- to save memory */
current_selection = (current_selection + 1) % NUM_SELECTION_HISTORY;
current_selection =
(current_selection + 1) % NUM_SELECTION_HISTORY;
selection_history[current_selection].len = end_mark - start_mark;
if (selection_history[current_selection].text)
free (selection_history[current_selection].text);
selection_history[current_selection].text = malloc (selection_history[current_selection].len + 1);
g_free (selection_history[current_selection].text);
selection_history[current_selection].text =
g_malloc (selection_history[current_selection].len + 1);
if (!selection_history[current_selection].text) {
selection_history[current_selection].text = malloc (1);
selection_history[current_selection].text = g_malloc (1);
*selection_history[current_selection].text = 0;
selection_history[current_selection].len = 0;
} else {

Просмотреть файл

@ -36,9 +36,6 @@
#include <errno.h>
#include <stdlib.h>
#if !defined(STDC_HEADERS) && defined(HAVE_MALLOC_H)
# include <malloc.h>
#endif
#include "src/global.h"

Просмотреть файл

@ -196,7 +196,8 @@ void edit_refresh_cmd (WEdit * edit)
c) rename <tempnam> to <filename>. */
/* returns 0 on error */
int edit_save_file (WEdit * edit, const char *filename)
int
edit_save_file (WEdit *edit, const char *filename)
{
char *p;
long filelen = 0;
@ -223,13 +224,13 @@ int edit_save_file (WEdit * edit, const char *filename)
char *savedir, *slashpos, *saveprefix;
slashpos = strrchr (filename, PATH_SEP);
if (slashpos) {
savedir = (char *) strdup (filename);
savedir = g_strdup (filename);
savedir[slashpos - filename + 1] = '\0';
} else
savedir = (char *) strdup (".");
savedir = g_strdup (".");
saveprefix = concat_dir_and_file (savedir, "cooledit");
free (savedir);
fd = mc_mkstemps(&savename, saveprefix, NULL);
g_free (savedir);
fd = mc_mkstemps (&savename, saveprefix, NULL);
g_free (saveprefix);
if (!savename)
return 0;
@ -245,8 +246,9 @@ int edit_save_file (WEdit * edit, const char *filename)
mc_chown (savename, edit->stat1.st_uid, edit->stat1.st_gid);
mc_chmod (savename, edit->stat1.st_mode);
if ((fd = mc_open (savename, O_CREAT | O_WRONLY | O_TRUNC | O_BINARY ,
edit->stat1.st_mode)) == -1)
if ((fd =
mc_open (savename, O_CREAT | O_WRONLY | O_TRUNC | O_BINARY,
edit->stat1.st_mode)) == -1)
goto error_save;
/* pipe save */
@ -254,7 +256,7 @@ int edit_save_file (WEdit * edit, const char *filename)
FILE *file;
mc_close (fd);
file = (FILE *) popen (p, "w");
file = (FILE *) popen (p, "w");
if (file) {
filelen = edit_write_stream (edit, file);
@ -262,38 +264,55 @@ int edit_save_file (WEdit * edit, const char *filename)
pclose (file);
#else
if (pclose (file) != 0) {
edit_error_dialog (_ ("Error"), catstrs (_ (" Error writing to pipe: "), p, " ", 0));
free (p);
edit_error_dialog (_("Error"),
catstrs (_(" Error writing to pipe: "),
p, " ", 0));
g_free (p);
goto error_save;
}
#endif
} else {
edit_error_dialog (_ ("Error"), get_sys_error (catstrs (_ (" Cannot open pipe for writing: "), p, " ", 0)));
free (p);
edit_error_dialog (_("Error"),
get_sys_error (catstrs
(_
(" Cannot open pipe for writing: "),
p, " ", 0)));
g_free (p);
goto error_save;
}
free (p);
g_free (p);
} else {
long buf;
buf = 0;
filelen = edit->last_byte;
while (buf <= (edit->curs1 >> S_EDIT_BUF_SIZE) - 1) {
if (mc_write (fd, (char *) edit->buffers1[buf], EDIT_BUF_SIZE) != EDIT_BUF_SIZE) {
if (mc_write (fd, (char *) edit->buffers1[buf], EDIT_BUF_SIZE)
!= EDIT_BUF_SIZE) {
mc_close (fd);
goto error_save;
}
buf++;
}
if (mc_write (fd, (char *) edit->buffers1[buf], edit->curs1 & M_EDIT_BUF_SIZE) != (edit->curs1 & M_EDIT_BUF_SIZE)) {
if (mc_write
(fd, (char *) edit->buffers1[buf],
edit->curs1 & M_EDIT_BUF_SIZE) !=
(edit->curs1 & M_EDIT_BUF_SIZE)) {
filelen = -1;
} else if (edit->curs2) {
edit->curs2--;
buf = (edit->curs2 >> S_EDIT_BUF_SIZE);
if (mc_write (fd, (char *) edit->buffers2[buf] + EDIT_BUF_SIZE - (edit->curs2 & M_EDIT_BUF_SIZE) - 1, 1 + (edit->curs2 & M_EDIT_BUF_SIZE)) != 1 + (edit->curs2 & M_EDIT_BUF_SIZE)) {
if (mc_write
(fd,
(char *) edit->buffers2[buf] + EDIT_BUF_SIZE -
(edit->curs2 & M_EDIT_BUF_SIZE) - 1,
1 + (edit->curs2 & M_EDIT_BUF_SIZE)) !=
1 + (edit->curs2 & M_EDIT_BUF_SIZE)) {
filelen = -1;
} else {
while (--buf >= 0) {
if (mc_write (fd, (char *) edit->buffers2[buf], EDIT_BUF_SIZE) != EDIT_BUF_SIZE) {
if (mc_write
(fd, (char *) edit->buffers2[buf],
EDIT_BUF_SIZE) != EDIT_BUF_SIZE) {
filelen = -1;
break;
}
@ -308,7 +327,8 @@ int edit_save_file (WEdit * edit, const char *filename)
if (filelen != edit->last_byte)
goto error_save;
if (this_save_mode == 2)
if (mc_rename (filename, catstrs (filename, option_backup_ext, 0)) == -1)
if (mc_rename (filename, catstrs (filename, option_backup_ext, 0))
== -1)
goto error_save;
if (this_save_mode > 0)
if (mc_rename (savename, filename) == -1)
@ -405,7 +425,7 @@ edit_set_filename (WEdit *edit, const char *f)
g_free (edit->filename);
if (!f)
f = "";
edit->filename = (char *) g_strdup (f);
edit->filename = g_strdup (f);
}
/* Here we want to warn the users of overwriting an existing file,
@ -840,7 +860,8 @@ edit_insert_column_of_text (WEdit * edit, unsigned char *data, int size, int wid
}
void edit_block_copy_cmd (WEdit * edit)
void
edit_block_copy_cmd (WEdit *edit)
{
long start_mark, end_mark, current = edit->curs1;
int size, x;
@ -851,23 +872,25 @@ void edit_block_copy_cmd (WEdit * edit)
if (eval_marks (edit, &start_mark, &end_mark))
return;
if (column_highlighting)
if ((x >= edit->column1 && x < edit->column2) || (x > edit->column2 && x <= edit->column1))
if ((x >= edit->column1 && x < edit->column2)
|| (x > edit->column2 && x <= edit->column1))
return;
copy_buf = edit_get_block (edit, start_mark, end_mark, &size);
/* all that gets pushed are deletes hence little space is used on the stack */
/* all that gets pushed are deletes hence little space is used on the stack */
edit_push_markers (edit);
if (column_highlighting) {
edit_insert_column_of_text (edit, copy_buf, size, abs (edit->column2 - edit->column1));
edit_insert_column_of_text (edit, copy_buf, size,
abs (edit->column2 - edit->column1));
} else {
while (size--)
edit_insert_ahead (edit, copy_buf[size]);
}
free (copy_buf);
g_free (copy_buf);
edit_scroll_screen_over_cursor (edit);
if (column_highlighting) {
@ -875,13 +898,15 @@ void edit_block_copy_cmd (WEdit * edit)
edit_push_action (edit, COLUMN_ON);
column_highlighting = 0;
} else if (start_mark < current && end_mark > current)
edit_set_markers (edit, start_mark, end_mark + end_mark - start_mark, 0, 0);
edit_set_markers (edit, start_mark,
end_mark + end_mark - start_mark, 0, 0);
edit->force |= REDRAW_PAGE;
}
void edit_block_move_cmd (WEdit * edit)
void
edit_block_move_cmd (WEdit *edit)
{
long count;
long current;
@ -896,13 +921,18 @@ void edit_block_move_cmd (WEdit * edit)
edit_update_curs_col (edit);
x = edit->curs_col;
if (start_mark <= edit->curs1 && end_mark >= edit->curs1)
if ((x > edit->column1 && x < edit->column2) || (x > edit->column2 && x < edit->column1))
if ((x > edit->column1 && x < edit->column2)
|| (x > edit->column2 && x < edit->column1))
return;
} else if (start_mark <= edit->curs1 && end_mark >= edit->curs1)
return;
if ((end_mark - start_mark) > option_max_undo / 2)
if (edit_query_dialog2 (_ ("Warning"), _ (" Block is large, you may not be able to undo this action. "), _ ("Continue"), _ ("Cancel")))
if (edit_query_dialog2
(_("Warning"),
_
(" Block is large, you may not be able to undo this action. "),
_("Continue"), _("Cancel")))
return;
edit_push_markers (edit);
@ -920,7 +950,10 @@ void edit_block_move_cmd (WEdit * edit)
deleted = 1;
}
edit_move_to_line (edit, line);
edit_cursor_move (edit, edit_move_forward3 (edit, edit_bol (edit, edit->curs1), x, 0) - edit->curs1);
edit_cursor_move (edit,
edit_move_forward3 (edit,
edit_bol (edit, edit->curs1),
x, 0) - edit->curs1);
edit_insert_column_of_text (edit, copy_buf, size, c2 - c1);
if (!deleted) {
line = edit->curs_line;
@ -928,13 +961,17 @@ void edit_block_move_cmd (WEdit * edit)
x = edit->curs_col;
edit_block_delete_cmd (edit);
edit_move_to_line (edit, line);
edit_cursor_move (edit, edit_move_forward3 (edit, edit_bol (edit, edit->curs1), x, 0) - edit->curs1);
edit_cursor_move (edit,
edit_move_forward3 (edit,
edit_bol (edit,
edit->curs1),
x, 0) - edit->curs1);
}
edit_set_markers (edit, 0, 0, 0, 0);
edit_push_action (edit, COLUMN_ON);
column_highlighting = 0;
} else {
copy_buf = malloc (end_mark - start_mark);
copy_buf = g_malloc (end_mark - start_mark);
edit_cursor_move (edit, start_mark - edit->curs1);
edit_scroll_screen_over_cursor (edit);
count = start_mark;
@ -943,14 +980,18 @@ void edit_block_move_cmd (WEdit * edit)
count++;
}
edit_scroll_screen_over_cursor (edit);
edit_cursor_move (edit, current - edit->curs1 - (((current - edit->curs1) > 0) ? end_mark - start_mark : 0));
edit_cursor_move (edit,
current - edit->curs1 -
(((current - edit->curs1) >
0) ? end_mark - start_mark : 0));
edit_scroll_screen_over_cursor (edit);
while (count-- > start_mark)
edit_insert_ahead (edit, copy_buf[end_mark - count - 1]);
edit_set_markers (edit, edit->curs1, edit->curs1 + end_mark - start_mark, 0, 0);
edit_set_markers (edit, edit->curs1,
edit->curs1 + end_mark - start_mark, 0, 0);
}
edit_scroll_screen_over_cursor (edit);
free (copy_buf);
g_free (copy_buf);
edit->force |= REDRAW_PAGE;
}
@ -1260,7 +1301,8 @@ static long sargs[NUM_REPL_ARGS][256 / sizeof (long)];
/* This function is a modification of mc-3.2.10/src/view.c:regexp_view_search() */
/* returns -3 on error in pattern, -1 on not found, found_len = 0 if either */
static int
string_regexp_search (char *pattern, char *string, int len, int match_type, int match_bol, int icase, int *found_len, void *d)
string_regexp_search (char *pattern, char *string, int len, int match_type,
int match_bol, int icase, int *found_len, void *d)
{
static regex_t r;
static char *old_pattern = NULL;
@ -1272,21 +1314,25 @@ string_regexp_search (char *pattern, char *string, int len, int match_type, int
if (!pmatch)
pmatch = s;
if (!old_pattern || strcmp (old_pattern, pattern) || old_type != match_type || old_icase != icase) {
if (!old_pattern || strcmp (old_pattern, pattern)
|| old_type != match_type || old_icase != icase) {
if (old_pattern) {
regfree (&r);
free (old_pattern);
g_free (old_pattern);
old_pattern = 0;
}
if (regcomp (&r, pattern, REG_EXTENDED | (icase ? REG_ICASE : 0))) {
*found_len = 0;
return -3;
}
old_pattern = (char *) strdup (pattern);
old_pattern = g_strdup (pattern);
old_type = match_type;
old_icase = icase;
}
if (regexec (&r, string, d ? NUM_REPL_ARGS : 1, pmatch, ((match_bol || match_type != match_normal) ? 0 : REG_NOTBOL)) != 0) {
if (regexec
(&r, string, d ? NUM_REPL_ARGS : 1, pmatch,
((match_bol
|| match_type != match_normal) ? 0 : REG_NOTBOL)) != 0) {
*found_len = 0;
return -1;
}
@ -1990,19 +2036,22 @@ void edit_quit_cmd (WEdit * edit)
#define TEMP_BUF_LEN 1024
/* returns a null terminated length of text. Result must be free'd */
unsigned char *edit_get_block (WEdit * edit, long start, long finish, int *l)
/* Return a null terminated length of text. Result must be g_free'd */
unsigned char *
edit_get_block (WEdit *edit, long start, long finish, int *l)
{
unsigned char *s, *r;
r = s = malloc (finish - start + 1);
r = s = g_malloc (finish - start + 1);
if (column_highlighting) {
*l = 0;
while (start < finish) { /* copy from buffer, excluding chars that are out of the column 'margins' */
/* copy from buffer, excluding chars that are out of the column 'margins' */
while (start < finish) {
int c, x;
x = edit_move_forward3 (edit, edit_bol (edit, start), 0, start);
x = edit_move_forward3 (edit, edit_bol (edit, start), 0,
start);
c = edit_get_byte (edit, start);
if ((x >= edit->column1 && x < edit->column2)
|| (x >= edit->column2 && x < edit->column1) || c == '\n') {
|| (x >= edit->column2 && x < edit->column1) || c == '\n') {
*s++ = c;
(*l)++;
}
@ -2040,12 +2089,12 @@ edit_save_block (WEdit * edit, const char *filename, long start,
p += r;
len -= r;
}
free (block);
g_free (block);
} else {
unsigned char *buf;
int i = start, end;
len = finish - start;
buf = malloc (TEMP_BUF_LEN);
buf = g_malloc (TEMP_BUF_LEN);
while (start != finish) {
end = min (finish, start + TEMP_BUF_LEN);
for (; i < end; i++)
@ -2053,7 +2102,7 @@ edit_save_block (WEdit * edit, const char *filename, long start,
len -= mc_write (file, (char *) buf, end - start);
start = end;
}
free (buf);
g_free (buf);
}
mc_close (file);
if (len)

Просмотреть файл

@ -85,12 +85,13 @@ static void status_string (WEdit * edit, char *s, int w, int fill)
}
/* how to get as much onto the status line as is numerically possible :) */
void edit_status (WEdit * edit)
void
edit_status (WEdit *edit)
{
int w, i, t;
char *s;
w = edit->widget.cols - (edit->have_frame * 2);
s = malloc (w + 16);
s = g_malloc (w + 16);
if (w < 4)
w = 4;
memset (s, ' ', w);
@ -105,14 +106,14 @@ void edit_status (WEdit * edit)
s[i] = ' ';
}
t = w - 20;
if (t > 1) /* g_snprintf() must write at least '\000' */
if (t > 1) /* g_snprintf() must write at least '\000' */
status_string (edit, s + 20, t + 1 /* for '\000' */ , ' ');
}
s[w] = 0;
printw ("%-*s", w, s);
attrset (EDITOR_NORMAL_COLOR);
free (s);
g_free (s);
}
/* this scrolls the text so that cursor is on the screen */

Просмотреть файл

@ -160,7 +160,7 @@ edit (const char *_file, int line)
WButtonBar *edit_bar;
if (option_backup_ext_int != -1) {
option_backup_ext = malloc (sizeof (int) + 1);
option_backup_ext = g_malloc (sizeof (int) + 1);
option_backup_ext[sizeof (int)] = '\0';
memcpy (option_backup_ext, (char *) &option_backup_ext_int,
sizeof (int));

Просмотреть файл

@ -81,16 +81,7 @@ struct _syntax_marker {
int option_syntax_highlighting = 1;
static inline void *syntax_malloc (size_t x)
{
void *p;
p = malloc (x);
memset (p, 0, x);
return p;
}
#define syntax_free(x) {if(x){free(x);(x)=0;}}
#define syntax_g_free(x) {if(x){g_free(x);(x)=0;}}
#define syntax_g_free(x) do {if(x) {g_free(x); (x)=0;}} while (0)
static long compare_word_to_right (WEdit * edit, long i, char *text, char *whole_left, char *whole_right, int line_start)
{
@ -355,7 +346,7 @@ static struct syntax_rule edit_get_rule (WEdit * edit, long byte_index)
if (i > (edit->syntax_marker ? edit->syntax_marker->offset + SYNTAX_MARKER_DENSITY : SYNTAX_MARKER_DENSITY)) {
struct _syntax_marker *s;
s = edit->syntax_marker;
edit->syntax_marker = syntax_malloc (sizeof (struct _syntax_marker));
edit->syntax_marker = g_malloc0 (sizeof (struct _syntax_marker));
edit->syntax_marker->next = s;
edit->syntax_marker->offset = i;
edit->syntax_marker->rule = edit->rule;
@ -377,7 +368,7 @@ static struct syntax_rule edit_get_rule (WEdit * edit, long byte_index)
break;
}
s = edit->syntax_marker->next;
syntax_free (edit->syntax_marker);
syntax_g_free (edit->syntax_marker);
edit->syntax_marker = s;
}
}
@ -411,7 +402,7 @@ static int read_one_line (char **line, FILE * f)
{
char *p;
int len = 256, c, r = 0, i = 0;
p = syntax_malloc (len);
p = g_malloc0 (len);
for (;;) {
c = fgetc (f);
@ -428,9 +419,9 @@ static int read_one_line (char **line, FILE * f)
} else {
if (i >= len - 1) {
char *q;
q = syntax_malloc (len * 2);
q = g_malloc0 (len * 2);
memcpy (q, p, len);
syntax_free (p);
syntax_g_free (p);
p = q;
len *= 2;
}
@ -603,7 +594,7 @@ static int edit_read_syntax_rules (WEdit * edit, FILE * f)
strcpy (whole_left, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_01234567890");
strcpy (whole_right, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_01234567890");
r = edit->rules = syntax_malloc (MAX_CONTEXTS * sizeof (struct context_rule *));
r = edit->rules = g_malloc0 (MAX_CONTEXTS * sizeof (struct context_rule *));
for (;;) {
char **a;
@ -617,7 +608,7 @@ static int edit_read_syntax_rules (WEdit * edit, FILE * f)
line = save_line + 1;
syntax_g_free (error_file_name);
if (l)
syntax_free (l);
syntax_g_free (l);
if (!read_one_line (&l, f))
break;
} else {
@ -663,12 +654,12 @@ static int edit_read_syntax_rules (WEdit * edit, FILE * f)
break_a;
}
a++;
c = r[0] = syntax_malloc (sizeof (struct context_rule));
c->left = (char *) strdup (" ");
c->right = (char *) strdup (" ");
c = r[0] = g_malloc0 (sizeof (struct context_rule));
c->left = g_strdup (" ");
c->right = g_strdup (" ");
num_contexts = 0;
} else {
c = r[num_contexts] = syntax_malloc (sizeof (struct context_rule));
c = r[num_contexts] = g_malloc0 (sizeof (struct context_rule));
if (!strcmp (*a, "exclusive")) {
a++;
c->between_delimiters = 1;
@ -676,14 +667,14 @@ static int edit_read_syntax_rules (WEdit * edit, FILE * f)
check_a;
if (!strcmp (*a, "whole")) {
a++;
c->whole_word_chars_left = (char *) strdup (whole_left);
c->whole_word_chars_right = (char *) strdup (whole_right);
c->whole_word_chars_left = g_strdup (whole_left);
c->whole_word_chars_right = g_strdup (whole_right);
} else if (!strcmp (*a, "wholeleft")) {
a++;
c->whole_word_chars_left = (char *) strdup (whole_left);
c->whole_word_chars_left = g_strdup (whole_left);
} else if (!strcmp (*a, "wholeright")) {
a++;
c->whole_word_chars_right = (char *) strdup (whole_right);
c->whole_word_chars_right = g_strdup (whole_right);
}
check_a;
if (!strcmp (*a, "linestart")) {
@ -691,23 +682,23 @@ static int edit_read_syntax_rules (WEdit * edit, FILE * f)
c->line_start_left = 1;
}
check_a;
c->left = (char *) strdup (*a++);
c->left = g_strdup (*a++);
check_a;
if (!strcmp (*a, "linestart")) {
a++;
c->line_start_right = 1;
}
check_a;
c->right = (char *) strdup (*a++);
c->right = g_strdup (*a++);
c->first_left = *c->left;
c->first_right = *c->right;
}
c->keyword = syntax_malloc (MAX_WORDS_PER_CONTEXT * sizeof (struct key_word *));
c->keyword = g_malloc0 (MAX_WORDS_PER_CONTEXT * sizeof (struct key_word *));
#if 0
c->max_words = MAX_WORDS_PER_CONTEXT;
#endif
num_words = 1;
c->keyword[0] = syntax_malloc (sizeof (struct key_word));
c->keyword[0] = g_malloc0 (sizeof (struct key_word));
fg = *a;
if (*a)
a++;
@ -717,7 +708,7 @@ static int edit_read_syntax_rules (WEdit * edit, FILE * f)
strcpy (last_fg, fg ? fg : "");
strcpy (last_bg, bg ? bg : "");
c->keyword[0]->color = this_try_alloc_color_pair (fg, bg);
c->keyword[0]->keyword = (char *) strdup (" ");
c->keyword[0]->keyword = g_strdup (" ");
check_not_a;
num_contexts++;
} else if (!strcmp (args[0], "spellcheck")) {
@ -731,17 +722,17 @@ static int edit_read_syntax_rules (WEdit * edit, FILE * f)
if (num_words == -1)
break_a;
check_a;
k = r[num_contexts - 1]->keyword[num_words] = syntax_malloc (sizeof (struct key_word));
k = r[num_contexts - 1]->keyword[num_words] = g_malloc0 (sizeof (struct key_word));
if (!strcmp (*a, "whole")) {
a++;
k->whole_word_chars_left = (char *) strdup (whole_left);
k->whole_word_chars_right = (char *) strdup (whole_right);
k->whole_word_chars_left = g_strdup (whole_left);
k->whole_word_chars_right = g_strdup (whole_right);
} else if (!strcmp (*a, "wholeleft")) {
a++;
k->whole_word_chars_left = (char *) strdup (whole_left);
k->whole_word_chars_left = g_strdup (whole_left);
} else if (!strcmp (*a, "wholeright")) {
a++;
k->whole_word_chars_right = (char *) strdup (whole_right);
k->whole_word_chars_right = g_strdup (whole_right);
}
check_a;
if (!strcmp (*a, "linestart")) {
@ -752,7 +743,7 @@ static int edit_read_syntax_rules (WEdit * edit, FILE * f)
if (!strcmp (*a, "whole")) {
break_a;
}
k->keyword = (char *) strdup (*a++);
k->keyword = g_strdup (*a++);
k->first = *k->keyword;
fg = *a;
if (*a)
@ -775,13 +766,13 @@ static int edit_read_syntax_rules (WEdit * edit, FILE * f)
break_a;
}
free_args (args);
syntax_free (l);
syntax_g_free (l);
}
free_args (args);
syntax_free (l);
syntax_g_free (l);
if (!edit->rules[0])
syntax_free (edit->rules);
syntax_g_free (edit->rules);
if (result)
return result;
@ -800,7 +791,7 @@ static int edit_read_syntax_rules (WEdit * edit, FILE * f)
for (j = 1; c->keyword[j]; j++)
*p++ = c->keyword[j]->first;
*p = '\0';
c->keyword_first_chars = syntax_malloc (strlen (first_chars) + 2);
c->keyword_first_chars = g_malloc0 (strlen (first_chars) + 2);
strcpy (c->keyword_first_chars, first_chars);
}
}
@ -816,31 +807,31 @@ void edit_free_syntax_rules (WEdit * edit)
if (!edit->rules)
return;
edit_get_rule (edit, -1);
syntax_free (edit->syntax_type);
syntax_g_free (edit->syntax_type);
edit->syntax_type = 0;
for (i = 0; edit->rules[i]; i++) {
if (edit->rules[i]->keyword) {
for (j = 0; edit->rules[i]->keyword[j]; j++) {
syntax_free (edit->rules[i]->keyword[j]->keyword);
syntax_free (edit->rules[i]->keyword[j]->whole_word_chars_left);
syntax_free (edit->rules[i]->keyword[j]->whole_word_chars_right);
syntax_free (edit->rules[i]->keyword[j]);
syntax_g_free (edit->rules[i]->keyword[j]->keyword);
syntax_g_free (edit->rules[i]->keyword[j]->whole_word_chars_left);
syntax_g_free (edit->rules[i]->keyword[j]->whole_word_chars_right);
syntax_g_free (edit->rules[i]->keyword[j]);
}
}
syntax_free (edit->rules[i]->left);
syntax_free (edit->rules[i]->right);
syntax_free (edit->rules[i]->whole_word_chars_left);
syntax_free (edit->rules[i]->whole_word_chars_right);
syntax_free (edit->rules[i]->keyword);
syntax_free (edit->rules[i]->keyword_first_chars);
syntax_free (edit->rules[i]);
syntax_g_free (edit->rules[i]->left);
syntax_g_free (edit->rules[i]->right);
syntax_g_free (edit->rules[i]->whole_word_chars_left);
syntax_g_free (edit->rules[i]->whole_word_chars_right);
syntax_g_free (edit->rules[i]->keyword);
syntax_g_free (edit->rules[i]->keyword_first_chars);
syntax_g_free (edit->rules[i]);
}
while (edit->syntax_marker) {
struct _syntax_marker *s = edit->syntax_marker->next;
syntax_free (edit->syntax_marker);
syntax_g_free (edit->syntax_marker);
edit->syntax_marker = s;
}
syntax_free (edit->rules);
syntax_g_free (edit->rules);
}
/* returns -1 on file error, line number on error in file syntax */
@ -867,7 +858,7 @@ static int edit_read_syntax_file (WEdit * edit, char **names, char *syntax_file,
args[0] = 0;
for (;;) {
line++;
syntax_free (l);
syntax_g_free (l);
if (!read_one_line (&l, f))
break;
get_args (l, args, &argc);
@ -885,7 +876,7 @@ static int edit_read_syntax_file (WEdit * edit, char **names, char *syntax_file,
}
if (names) {
/* 1: just collecting a list of names of rule sets */
names[count++] = (char *) strdup (args[2]);
names[count++] = g_strdup (args[2]);
names[count] = 0;
} else if (type) {
/* 2: rule set was explicitly specified by the caller */
@ -920,8 +911,8 @@ static int edit_read_syntax_file (WEdit * edit, char **names, char *syntax_file,
else
result = line_error;
} else {
syntax_free (edit->syntax_type);
edit->syntax_type = (char *) strdup (args[2]);
syntax_g_free (edit->syntax_type);
edit->syntax_type = g_strdup (args[2]);
/* if there are no rules then turn off syntax highlighting for speed */
if (!edit->rules[1])
if (!edit->rules[0]->keyword[1] && !edit->rules[0]->spelling) {
@ -935,7 +926,7 @@ static int edit_read_syntax_file (WEdit * edit, char **names, char *syntax_file,
free_args (args);
}
free_args (args);
syntax_free (l);
syntax_g_free (l);
fclose (f);
return result;
}

Просмотреть файл

@ -115,13 +115,15 @@ end_paragraph (WEdit *edit, int force)
i - edit->curs_line, 0));
}
static unsigned char *get_paragraph (WEdit * edit, long p, long q, int indent, int *size)
static unsigned char *
get_paragraph (WEdit *edit, long p, long q, int indent, int *size)
{
unsigned char *s, *t;
#if 0
t = malloc ((q - p) + 2 * (q - p) / option_word_wrap_line_length + 10);
t = g_malloc ((q - p) + 2 * (q - p) / option_word_wrap_line_length +
10);
#else
t = malloc (2 * (q - p) + 100);
t = g_malloc (2 * (q - p) + 100);
#endif
if (!t)
return 0;
@ -307,7 +309,8 @@ static int test_indent (WEdit * edit, long p, long q)
return indent;
}
void format_paragraph (WEdit * edit, int force)
void
format_paragraph (WEdit *edit, int force)
{
long p, q;
int size;
@ -326,13 +329,13 @@ void format_paragraph (WEdit * edit, int force)
if (!force) {
int i;
if (strchr (NO_FORMAT_CHARS_START, *t)) {
free (t);
g_free (t);
return;
}
for (i = 0; i < size - 1; i++) {
if (t[i] == '\n') {
if (strchr (NO_FORMAT_CHARS_START "\t ", t[i + 1])) {
free (t);
g_free (t);
return;
}
}
@ -340,8 +343,8 @@ void format_paragraph (WEdit * edit, int force)
}
format_this (t, q - p, indent);
put_paragraph (edit, t, p, q, indent, size);
free (t);
g_free (t);
/* Scroll left as much as possible to show the formatted paragraph */
edit_scroll_left(edit, - edit->start_col);
edit_scroll_left (edit, -edit->start_col);
}