Mercurial > hg > nnchat
comparison util.c @ 492:73f8df0ecffe
Add dirty flag to editbuf struct and handling functions.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sun, 27 May 2012 10:06:42 +0300 |
parents | ad7ddce47878 |
children | b6f6c989deab |
comparison
equal
deleted
inserted
replaced
491:942446795978 | 492:73f8df0ecffe |
---|---|
320 if (pos >= buf->len) | 320 if (pos >= buf->len) |
321 buf->data[buf->len++] = ch; | 321 buf->data[buf->len++] = ch; |
322 else | 322 else |
323 buf->data[pos] = ch; | 323 buf->data[pos] = ch; |
324 | 324 |
325 buf->dirty = TRUE; | |
325 return 0; | 326 return 0; |
326 } | 327 } |
327 | 328 |
328 | 329 |
329 int nn_editbuf_insert(nn_editbuf_t *buf, size_t pos, char ch) | 330 int nn_editbuf_insert(nn_editbuf_t *buf, size_t pos, char ch) |
338 { | 339 { |
339 memmove(&(buf->data[pos+1]), &(buf->data[pos]), buf->len - pos + 1); | 340 memmove(&(buf->data[pos+1]), &(buf->data[pos]), buf->len - pos + 1); |
340 buf->data[pos] = ch; | 341 buf->data[pos] = ch; |
341 } | 342 } |
342 buf->len++; | 343 buf->len++; |
344 | |
345 buf->dirty = TRUE; | |
343 return 0; | 346 return 0; |
344 } | 347 } |
345 | 348 |
346 | 349 |
347 int nn_editbuf_delete(nn_editbuf_t *buf, size_t pos) | 350 int nn_editbuf_delete(nn_editbuf_t *buf, size_t pos) |
348 { | 351 { |
349 if (pos < buf->len) | 352 if (pos < buf->len) |
350 { | 353 { |
351 memmove(&(buf->data[pos]), &(buf->data[pos+1]), buf->len - pos); | 354 memmove(&(buf->data[pos]), &(buf->data[pos+1]), buf->len - pos); |
352 buf->len--; | 355 buf->len--; |
356 buf->dirty = TRUE; | |
353 return 0; | 357 return 0; |
354 } | 358 } |
355 else | 359 else |
356 return -2; | 360 return -2; |
357 } | 361 } |
359 | 363 |
360 void nn_editbuf_clear(nn_editbuf_t *buf) | 364 void nn_editbuf_clear(nn_editbuf_t *buf) |
361 { | 365 { |
362 buf->len = 0; | 366 buf->len = 0; |
363 buf->pos = 0; | 367 buf->pos = 0; |
368 buf->dirty = TRUE; | |
364 } | 369 } |
365 | 370 |
366 | 371 |
367 nn_editbuf_t * nn_editbuf_new(size_t n) | 372 nn_editbuf_t * nn_editbuf_new(size_t n) |
368 { | 373 { |
369 nn_editbuf_t *res = th_calloc(1, sizeof(nn_editbuf_t)); | 374 nn_editbuf_t *res = th_calloc(1, sizeof(nn_editbuf_t)); |
370 | 375 |
371 res->data = (char *) th_malloc(n); | 376 res->data = (char *) th_malloc(n); |
372 res->size = n; | 377 res->size = n; |
378 res->dirty = TRUE; | |
373 | 379 |
374 return res; | 380 return res; |
375 } | 381 } |
376 | 382 |
377 | 383 |
396 if ((res = nn_editbuf_new(src->size)) == NULL) | 402 if ((res = nn_editbuf_new(src->size)) == NULL) |
397 return NULL; | 403 return NULL; |
398 | 404 |
399 memcpy(res->data, src->data, src->size); | 405 memcpy(res->data, src->data, src->size); |
400 res->pos = res->len = src->len; | 406 res->pos = res->len = src->len; |
407 res->dirty = TRUE; | |
401 | 408 |
402 return res; | 409 return res; |
403 } | 410 } |
404 | 411 |
405 | 412 |
435 | 442 |
436 if (pos >= buf->len) | 443 if (pos >= buf->len) |
437 buf->pos = buf->len; | 444 buf->pos = buf->len; |
438 else | 445 else |
439 buf->pos = pos; | 446 buf->pos = pos; |
447 | |
448 buf->dirty = TRUE; | |
440 } | 449 } |
441 | 450 |
442 | 451 |
443 static uint8_t nn_hash_user(const char *name) | 452 static uint8_t nn_hash_user(const char *name) |
444 { | 453 { |