diff options
| author | 2024-04-29 08:29:18 +0200 | |
|---|---|---|
| committer | 2024-04-29 08:29:18 +0200 | |
| commit | 9a13e330f12aaf0fc1535e922efbf315308d252b (patch) | |
| tree | e16476d4490adbbb57072fa0936c92bfdd1134d5 /data.c | |
| parent | Start of list support. (diff) | |
| download | snac2-9a13e330f12aaf0fc1535e922efbf315308d252b.tar.gz snac2-9a13e330f12aaf0fc1535e922efbf315308d252b.tar.xz snac2-9a13e330f12aaf0fc1535e922efbf315308d252b.zip | |
More work in lists.
Diffstat (limited to 'data.c')
| -rw-r--r-- | data.c | 62 |
1 files changed, 48 insertions, 14 deletions
| @@ -1731,9 +1731,9 @@ xs_list *tag_search(char *tag, int skip, int show) | |||
| 1731 | 1731 | ||
| 1732 | /** lists **/ | 1732 | /** lists **/ |
| 1733 | 1733 | ||
| 1734 | xs_list *list_maint(snac *user, const char *list, int op) | 1734 | xs_val *list_maint(snac *user, const char *list, int op) |
| 1735 | { | 1735 | { |
| 1736 | xs_list *l = NULL; | 1736 | xs_val *l = NULL; |
| 1737 | 1737 | ||
| 1738 | switch (op) { | 1738 | switch (op) { |
| 1739 | case 0: /** list of lists **/ | 1739 | case 0: /** list of lists **/ |
| @@ -1752,10 +1752,12 @@ xs_list *list_maint(snac *user, const char *list, int op) | |||
| 1752 | fclose(f); | 1752 | fclose(f); |
| 1753 | 1753 | ||
| 1754 | title = xs_strip_i(title); | 1754 | title = xs_strip_i(title); |
| 1755 | xs *md5 = xs_md5_hex(title, strlen(title)); | 1755 | |
| 1756 | xs *v2 = xs_replace(v, ".id", ""); | ||
| 1757 | xs *l2 = xs_split(v2, "/"); | ||
| 1756 | 1758 | ||
| 1757 | /* return [ list_id, list_title ] */ | 1759 | /* return [ list_id, list_title ] */ |
| 1758 | l = xs_list_append(l, xs_list_append(xs_list_new(), md5, title)); | 1760 | l = xs_list_append(l, xs_list_append(xs_list_new(), xs_list_get(l2, -1), title)); |
| 1759 | } | 1761 | } |
| 1760 | } | 1762 | } |
| 1761 | } | 1763 | } |
| @@ -1764,26 +1766,58 @@ xs_list *list_maint(snac *user, const char *list, int op) | |||
| 1764 | 1766 | ||
| 1765 | case 1: /** create new list (list is the name) **/ | 1767 | case 1: /** create new list (list is the name) **/ |
| 1766 | { | 1768 | { |
| 1767 | FILE *f; | 1769 | xs *lol = list_maint(user, NULL, 0); |
| 1768 | xs *dir = xs_fmt("%s/list/", user->basedir); | 1770 | int c = 0; |
| 1769 | xs *md5 = xs_md5_hex(list, strlen(list)); | 1771 | xs_list *v; |
| 1772 | int add = 1; | ||
| 1770 | 1773 | ||
| 1771 | mkdirx(dir); | 1774 | /* check if this list name already exists */ |
| 1775 | while (xs_list_next(lol, &v, &c)) { | ||
| 1776 | if (strcmp(xs_list_get(v, 1), list) == 0) { | ||
| 1777 | add = 0; | ||
| 1778 | break; | ||
| 1779 | } | ||
| 1780 | } | ||
| 1772 | 1781 | ||
| 1773 | xs *fn = xs_fmt("%s%s.id", dir, md5); | 1782 | if (add) { |
| 1783 | FILE *f; | ||
| 1784 | xs *dir = xs_fmt("%s/list/", user->basedir); | ||
| 1785 | xs *id = xs_fmt("%010x", time(NULL)); | ||
| 1774 | 1786 | ||
| 1775 | if ((f = fopen(fn, "w")) != NULL) { | 1787 | mkdirx(dir); |
| 1776 | fprintf(f, "%s\n", list); | 1788 | |
| 1777 | fclose(f); | 1789 | xs *fn = xs_fmt("%s%s.id", dir, id); |
| 1790 | |||
| 1791 | if ((f = fopen(fn, "w")) != NULL) { | ||
| 1792 | fprintf(f, "%s\n", list); | ||
| 1793 | fclose(f); | ||
| 1794 | } | ||
| 1795 | |||
| 1796 | l = xs_stock(XSTYPE_TRUE); | ||
| 1778 | } | 1797 | } |
| 1798 | else | ||
| 1799 | l = xs_stock(XSTYPE_FALSE); | ||
| 1779 | } | 1800 | } |
| 1780 | 1801 | ||
| 1781 | break; | 1802 | break; |
| 1782 | 1803 | ||
| 1783 | case 2: /** delete list (list is md5 id) **/ | 1804 | case 2: /** delete list (list is the id) **/ |
| 1805 | { | ||
| 1806 | if (xs_is_hex(list)) { | ||
| 1807 | xs *fn = xs_fmt("%s/list/%s.id", user->basedir, list); | ||
| 1808 | unlink(fn); | ||
| 1809 | |||
| 1810 | fn = xs_replace_i(fn, ".id", ".lst"); | ||
| 1811 | unlink(fn); | ||
| 1812 | |||
| 1813 | fn = xs_replace_i(fn, ".list", ".idx"); | ||
| 1814 | unlink(fn); | ||
| 1815 | } | ||
| 1816 | } | ||
| 1817 | |||
| 1784 | break; | 1818 | break; |
| 1785 | 1819 | ||
| 1786 | case 3: /** list content (list is md5 id) **/ | 1820 | case 3: /** list content (list is the id) **/ |
| 1787 | break; | 1821 | break; |
| 1788 | } | 1822 | } |
| 1789 | 1823 | ||