changeset 13240 | 9c72f93b7a02 |
parent 13239 | dbd7a6b09ada |
child 13242 | 26327eac56dc |
13239:dbd7a6b09ada | 13240:9c72f93b7a02 |
---|---|
459 return success, ret; |
459 return success, ret; |
460 end |
460 end |
461 return item; |
461 return item; |
462 end |
462 end |
463 |
463 |
464 local function list_close(list) |
|
465 if list.index and list.index.file then |
|
466 list.index.file:close(); |
|
467 end |
|
468 return list.file:close(); |
|
469 end |
|
470 |
|
464 local indexed_list_mt = { |
471 local indexed_list_mt = { |
465 __index = function(t, i) |
472 __index = function(t, i) |
466 if type(i) ~= "number" or i % 1 ~= 0 or i < 1 then |
473 if type(i) ~= "number" or i % 1 ~= 0 or i < 1 then |
467 return |
474 return |
468 end |
475 end |
474 return item; |
481 return item; |
475 end; |
482 end; |
476 __len = function(t) |
483 __len = function(t) |
477 return #t.index; |
484 return #t.index; |
478 end; |
485 end; |
486 __close = list_close; |
|
479 } |
487 } |
480 |
488 |
481 local function list_load(username, host, datastore) |
489 local function list_load(username, host, datastore) |
482 local items = {}; |
490 local items = {}; |
483 local data, err, errno = envloadfile(getpath(username, host, datastore, "list"), {item = function(i) t_insert(items, i); end}); |
491 local data, err, errno = envloadfile(getpath(username, host, datastore, "list"), {item = function(i) t_insert(items, i); end}); |
514 local index, err = get_list_index(username, host, datastore); |
522 local index, err = get_list_index(username, host, datastore); |
515 if not index then |
523 if not index then |
516 file:close() |
524 file:close() |
517 return index, err; |
525 return index, err; |
518 end |
526 end |
519 return setmetatable({ file = file; index = index }, indexed_list_mt); |
527 return setmetatable({ file = file; index = index; close = list_close }, indexed_list_mt); |
520 end |
528 end |
521 |
529 |
522 local function shift_index(index_filename, index, trim_to, offset) |
530 local function shift_index(index_filename, index, trim_to, offset) |
523 local index_scratch = index_filename .. "~"; |
531 local index_scratch = index_filename .. "~"; |
524 local new_index, err = io_open(index_scratch, "w"); |
532 local new_index, err = io_open(index_scratch, "w"); |