]> git.sven.stormbind.net Git - sven/exfat-utils.git/blob - label/main.c
7c2739a42b501a95fd91d3df714316b5c477b400
[sven/exfat-utils.git] / label / main.c
1 /*
2         main.c (20.01.11)
3         Prints or changes exFAT volume label.
4
5         Free exFAT implementation.
6         Copyright (C) 2011-2017  Andrew Nayenko
7
8         This program is free software; you can redistribute it and/or modify
9         it under the terms of the GNU General Public License as published by
10         the Free Software Foundation, either version 2 of the License, or
11         (at your option) any later version.
12
13         This program is distributed in the hope that it will be useful,
14         but WITHOUT ANY WARRANTY; without even the implied warranty of
15         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16         GNU General Public License for more details.
17
18         You should have received a copy of the GNU General Public License along
19         with this program; if not, write to the Free Software Foundation, Inc.,
20         51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 */
22
23 #include <exfat.h>
24 #include <stdio.h>
25 #include <string.h>
26
27 int main(int argc, char* argv[])
28 {
29         char** pp;
30         struct exfat ef;
31         int rc = 0;
32
33         for (pp = argv + 1; *pp; pp++)
34                 if (strcmp(*pp, "-V") == 0)
35                 {
36                         printf("exfatlabel %s\n", VERSION);
37                         puts("Copyright (C) 2011-2017  Andrew Nayenko");
38                         return 0;
39                 }
40
41         if (argc != 2 && argc != 3)
42         {
43                 fprintf(stderr, "Usage: %s [-V] <device> [label]\n", argv[0]);
44                 return 1;
45         }
46
47         if (argv[2])
48         {
49                 if (exfat_mount(&ef, argv[1], "") != 0)
50                         return 1;
51                 rc = (exfat_set_label(&ef, argv[2]) != 0);
52         }
53         else
54         {
55                 if (exfat_mount(&ef, argv[1], "ro") != 0)
56                         return 1;
57                 puts(exfat_get_label(&ef));
58         }
59
60         exfat_unmount(&ef);
61         return rc;
62 }