pmt: initial 2.5.0 update

This commit is contained in:
2024-07-21 20:20:17 +03:00
parent 4f8e15935a
commit 91713b86be
59 changed files with 2238 additions and 888 deletions

View File

@@ -1,4 +1,4 @@
/* By YZBruh | ShawkTeam */
/* By YZBruh */
/**
* Copyright 2024 Partition Manager
@@ -16,7 +16,7 @@
* limitations under the License.
*/
#if defined(__cplusplus)
#ifdef __cplusplus
extern "C" {
#endif
@@ -24,45 +24,35 @@ extern "C" {
#define INC_DEBUGERS
#define INC_STAT
#include <pmt.h>
#include <pmt/pmt.h>
#include <pmt/stringkeys.h>
/* pmt's man doc file path on termux */
#define TERMUX_PMT_MANDOC "/data/data/com.termux/files/usr/share/man/man8/pmt.8.gz"
/* language configuration paths */
#define PMTLANG_CONF "/sdcard/.pmtlang.conf"
/* for termux */
#define TERMUX_PMTLANG_CONF "/data/data/com.termux/files/usr/etc/pmtlang.conf"
#define PMT_SW_POINT "/sdcard/.pmtlangsw"
/* for internal storage */
#define INTRNL_PMTLANG_CONF "/sdcard/.pmtlang.conf"
extern struct pmt_langdb_langs lang[];
struct pmt_langdb_general* current = NULL;
/* shortcuts to check that language is changed */
char* curr_lang;
static FILE *langconf;
/* for termux */
#define TERMUX_PMT_SW_POINT "/data/data/com.termux/files/usr/etc/pmtlangsw"
/* for internal storage */
#define INTRNL_PMT_SW_POINT "/sdcard/.pmtlangsw"
extern bool pmt_inst_on_termux;
extern char* bin_name;
extern char* pmt_langdb_langs[];
extern int pmt_langdb_total;
extern int pmt_langdb_ctrl;
FILE *langconf;
static int
static const char*
langctrl(const char* _Nonnull lang_)
{
if (strcmp(lang_, "en") == 0 || strcmp(lang_, "tr") == 0)
return 0;
for (int langct = 0; lang[langct].lang_pr != NULL; langct++)
{
if (strcmp(lang_, lang[langct].lang_pr) == 0)
return lang_;
}
return 1;
return NULL;
}
char* loadlang(void)
int loadlang(void)
{
static char lang_fpr[10] = "en";
langconf = NULL;
@@ -70,126 +60,88 @@ char* loadlang(void)
if (get_stat(TERMUX_PMT_MANDOC, "file") == 0)
pmt_inst_on_termux = true;
if (pmt_inst_on_termux)
langconf = fopen(PMTLANG_CONF, "r+");
if (langconf == NULL)
{
if (get_stat(TERMUX_PMTLANG_CONF, "file") == 0)
langconf = fopen(PMTLANG_CONF, "w+");
if (langconf == NULL || langconf != NULL)
{
langconf = fopen(TERMUX_PMTLANG_CONF, "r+");
setlang("en", 1);
current = &en;
curr_lang = "en";
if (langconf == NULL)
{
langconf = fopen(TERMUX_PMTLANG_CONF, "w+");
if (langconf != NULL)
fclose(langconf);
if (langconf == NULL)
{
setlang("en");
return "en";
}
fclose(langconf);
}
else
{
while (fgets(lang_fpr, sizeof(lang_fpr), langconf) != NULL)
{
if (strcmp(lang_fpr, "en") == 0)
{
fclose(langconf);
return "en";
}
else if (strcmp(lang_fpr, "tr") == 0)
{
fclose(langconf);
return "tr";
}
}
fclose(langconf);
}
return 0;
}
}
else
{
if (get_stat(INTRNL_PMTLANG_CONF, "file") == 0)
while (fgets(lang_fpr, sizeof(lang_fpr), langconf) != NULL)
{
langconf = fopen(INTRNL_PMTLANG_CONF, "r");
if (langconf == NULL)
if (strcmp(lang_fpr, "en") == 0)
{
langconf = fopen(INTRNL_PMTLANG_CONF, "w+");
if (langconf == NULL)
{
setlang("en");
return "en";
}
fclose(langconf);
current = &en;
curr_lang = "en";
return 0;
}
else if (strcmp(lang_fpr, "tr") == 0)
{
fclose(langconf);
current = &tr;
curr_lang = "tr";
return 0;
}
else
{
while (fgets(lang_fpr, sizeof(lang_fpr), langconf) != NULL)
{
if (strcmp(lang_fpr, "en") == 0)
{
fclose(langconf);
return "en";
}
else if (strcmp(lang_fpr, "tr") == 0)
{
fclose(langconf);
return "tr";
}
}
fclose(langconf);
setlang("en", 0);
loadlang();
return 0;
}
}
else return "en";
if (fgets(lang_fpr, sizeof(lang_fpr), langconf) == NULL)
{
setlang("en", 1);
loadlang();
return 0;
}
}
return "en";
return 1;
}
void setlang(const char* _Nonnull lang)
void setlang(const char* _Nonnull lang, int null_conf_stat)
{
static char* lcf_path;
if (langctrl(lang) == NULL)
LOGE("Unknown language: %s.\n", lang);
if (pmt_inst_on_termux)
lcf_path = TERMUX_PMTLANG_CONF;
else
lcf_path = INTRNL_PMTLANG_CONF;
if (get_stat(lcf_path, "file") == 0)
remove(lcf_path);
if (get_stat(PMTLANG_CONF, "file") == 0)
remove(PMTLANG_CONF);
langconf = NULL;
if (pmt_inst_on_termux)
langconf = fopen(TERMUX_PMTLANG_CONF, "w");
else
langconf = fopen(INTRNL_PMTLANG_CONF, "w");
langconf = fopen(PMTLANG_CONF, "w");
if (langconf == NULL)
LOGE("Failed!!! Cannot open/write config file.\n");
if (langctrl(lang) == 0)
{
if (fprintf(langconf, "%s", lang) < 2)
LOGE("Failed!!! Couldn't write config!\n");
else
fclose(langconf);
}
if (fprintf(langconf, "%s", lang) < 2)
LOGE("Failed!!! Couldn't write config!\n");
else
LOGE("Unknown language: %s.\n", lang);
fclose(langconf);
static int status;
if (pmt_inst_on_termux)
if (null_conf_stat != 1)
{
status = open(TERMUX_PMT_SW_POINT, O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (status == 0)
close(status);
}
else
{
status = open(INTRNL_PMT_SW_POINT, O_WRONLY | O_CREAT | O_TRUNC, 0666);
status = open(PMT_SW_POINT, O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (status == 0)
close(status);
}
@@ -197,23 +149,16 @@ void setlang(const char* _Nonnull lang)
int search_sls(void)
{
static char* sw_point_path;
if (pmt_inst_on_termux)
sw_point_path = TERMUX_PMT_SW_POINT;
else
sw_point_path = INTRNL_PMT_SW_POINT;
if (get(sw_point_path, "file") == 0)
if (get_stat(PMT_SW_POINT, "file") == 0)
{
remove(sw_point_path);
remove(PMT_SW_POINT);
return 0;
}
else
return 1;
}
#if defined(__cplusplus)
#ifdef __cplusplus
}
#endif