#include <errno.h>
#include <time.h>
#include <unistd.h>\r
+#include <sys/types.h>\r
+#include <sys/stat.h>\r
+#include <linux/limits.h>\r
#include <ventoy_define.h>
#include <ventoy_util.h>\r
#include "ventoy_gtk.h"\r
\r
+static int g_kiosk_mode = 0;\r
+char g_log_file[PATH_MAX];\r
+char g_ini_file[PATH_MAX];\r
+\r
static int set_image_from_pixbuf(GtkBuilder *pBuilder, const char *id, const void *pData, int len)\r
{\r
GtkImage *pImage = NULL;\r
return ret;\r
}\r
\r
+static int adjust_cur_dir(char *argv0)\r
+{\r
+ int ret = 2;\r
+ char c;\r
+ char *pos = NULL;\r
+ char *end = NULL;\r
+\r
+ if (argv0[0] == '.')\r
+ {\r
+ return 1;\r
+ }\r
+\r
+ for (pos = argv0; pos && *pos; pos++)\r
+ {\r
+ if (*pos == '/')\r
+ {\r
+ end = pos;\r
+ }\r
+ }\r
+\r
+ if (end)\r
+ {\r
+ c = *end;\r
+ *end = 0;\r
+\r
+ pos = strstr(argv0, "/tool/");\r
+ if (pos)\r
+ {\r
+ *pos = 0;\r
+ }\r
+ \r
+ ret = chdir(argv0);\r
+ \r
+ *end = c;\r
+ if (pos)\r
+ {\r
+ *pos = '/';\r
+ }\r
+ }\r
+\r
+ return ret;\r
+}\r
+\r
int main(int argc, char *argv[])\r
{\r
+ int i;\r
int len;\r
const void *pData = NULL;\r
GtkWidget *pWidget = NULL;\r
GtkBuilder *pBuilder = NULL;\r
GError *error = NULL;\r
+ struct stat logstat;\r
\r
gtk_init(&argc, &argv);\r
\r
return EACCES;\r
}\r
\r
+ if (access("./boot/boot.img", F_OK) == -1)\r
+ {\r
+ adjust_cur_dir(argv[0]); \r
+ }\r
+\r
if (access("./boot/boot.img", F_OK) == -1)\r
{\r
early_msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "Please run under the correct directory.");\r
return 1;\r
}\r
\r
+ for (i = 0; i < argc; i++)\r
+ {\r
+ if (argv[i] && strcmp(argv[i], "--kiosk") == 0)\r
+ {\r
+ g_kiosk_mode = 1;\r
+ break;\r
+ }\r
+ }\r
+ \r
+ snprintf(g_log_file, sizeof(g_log_file), "log.txt");\r
+ snprintf(g_ini_file, sizeof(g_ini_file), "./Ventoy2Disk.ini");\r
+ for (i = 0; i < argc; i++)
+ {
+ if (argv[i] && argv[i + 1] && strcmp(argv[i], "-l") == 0)
+ {
+ snprintf(g_log_file, sizeof(g_log_file), "%s", argv[i + 1]);\r
+ }
+ else if (argv[i] && argv[i + 1] && strcmp(argv[i], "-i") == 0)
+ {
+ snprintf(g_ini_file, sizeof(g_ini_file), "%s", argv[i + 1]);\r
+ }
+ }\r
+\r
+ memset(&logstat, 0, sizeof(logstat));\r
+ if (0 == stat(g_log_file, &logstat))\r
+ {\r
+ if (logstat.st_size >= 4 * SIZE_1MB)\r
+ {\r
+ remove(g_log_file);\r
+ }\r
+ }\r
+\r
ventoy_log_init();\r
\r
vlog("================================================\n");\r
vlog("===== Ventoy2Disk %s powered by GTK%d.x =====\n", ventoy_get_local_version(), GTK_MAJOR_VERSION);\r
vlog("================================================\n");\r
+ vlog("log file is <%s> lastsize:%lld\n", g_log_file, (long long)logstat.st_size);\r
+ vlog("ini file is <%s>\n", g_ini_file);\r
\r
ventoy_disk_init();\r
return 1;\r
}\r
\r
- pData = get_refresh_icon_raw_data(&len);\r
- set_image_from_pixbuf(pBuilder, "image_refresh", pData, len);\r
- \r
- pData = get_secure_icon_raw_data(&len);\r
- set_image_from_pixbuf(pBuilder, "image_secure_local", pData, len);\r
- set_image_from_pixbuf(pBuilder, "image_secure_dev", pData, len);\r
+ if (g_kiosk_mode)\r
+ {\r
+ gtk_image_set_from_file((GtkImage *)gtk_builder_get_object(pBuilder, "image_refresh"), "/ventoy/refresh.png"); \r
+ gtk_image_set_from_file((GtkImage *)gtk_builder_get_object(pBuilder, "image_secure_local"), "/ventoy/secure.png"); \r
+ gtk_image_set_from_file((GtkImage *)gtk_builder_get_object(pBuilder, "image_secure_dev"), "/ventoy/secure.png"); \r
+ }\r
+ else\r
+ {\r
+ pData = get_refresh_icon_raw_data(&len);\r
+ set_image_from_pixbuf(pBuilder, "image_refresh", pData, len); \r
+ pData = get_secure_icon_raw_data(&len);\r
+ set_image_from_pixbuf(pBuilder, "image_secure_local", pData, len);\r
+ set_image_from_pixbuf(pBuilder, "image_secure_dev", pData, len);\r
+ }\r
\r
pWidget = GTK_WIDGET(gtk_builder_get_object(pBuilder, "window"));\r
gtk_widget_show_all(pWidget);\r
\r
on_init_window(pBuilder);\r
g_signal_connect(G_OBJECT(pWidget), "delete_event", G_CALLBACK(on_exit_window), NULL);\r
+ g_signal_connect(G_OBJECT(pWidget), "destroy", G_CALLBACK(gtk_main_quit), NULL);\r
\r
gtk_main();\r
\r