#include <JC_Button.h>
#include "md5.h"
#define PIN_BTN_START A1
char cpath[256] = "/home/mauro";
//char up[] = "../../mauro/documenti/root/";
char up[] = "../../\0\0\0\0\0\0\0";
Button btnStart(PIN_BTN_START);
bool isStart;
uint32_t saveMillis;
extern volatile uint32_t timer0_millis;
//aadda2abba98d5f069b3433bf0ea6d24
// 668beacae4b478fed6b748dcb3c2c037
void md5Print(uint8_t *p) {
for (uint8_t i=0; i<16; i++) {
Serial.print(p[i], HEX);
//Serial.print(' ');
}
}
void path0(char *cp, char *rp) {
//char cpath[256] = "/home/mauro/documenti";
//char req_path[] = "../../../home/mauro/documenti/../root/";
// recente da verificare
uint8_t len_rp = strlen(rp);
if (len_rp == 2 && rp[len_rp-1] == '.') {
rp[len_rp] = '/';
} else if (len_rp == 1 && rp[len_rp-1] == '.') {
rp[len_rp-1] == 0;
return;
}
uint8_t len_cp = strlen(cp);
if ((cp[len_cp - 1] != '/') &&
(rp[0] != '/')) {
cp[len_cp] = '/';
}
strcat(cp, rp);
Serial.println(cp);
while(true) {
char *p = strstr(cp, "../");
if (strlen(cp) == 1)
break;
if (p == nullptr)
break;
char *p1 = p;
//Serial.println(cp[0]);
while(p1>&cp[0]) {
p1--;
if (*p1 != '/')
break;
}
while(p1>&cp[0]) {
p1--;
if (*p1 == '/')
break;
}
strcpy(++p1, p+3);
//Serial.println(cp[0]);
}
}
void remwc(char *s, char c) {
if (strlen(s) == 1) return;
uint8_t i = 0;
uint8_t j = 0;
bool is_first_c = false;
while (s[i]) {
// fino alla fine della stringa
if (s[i] == c) {
// si spazio, il primo trovato
if (!is_first_c) {
is_first_c = true;
s[j++] = s[i++]; // spezza
} else {
// scarta lo spazio
i++;
}
} else {
// non è uno spazio
s[j++] = s[i++];
is_first_c = false;
}
}
if (s[j - 1] == c) {
s[j - 1] = 0;
}
// finita stringa, la tappo con uno 0
s[j] = '\0';
}
void setup() {
char root[] = "/mauro";
char pnt[] = ".";
char pntpnt[] = "..";
pinMode(5, OUTPUT);
btnStart.begin();
Serial.begin(115200);
int ret = strcmp(root, "/");
Serial.print("ret: ");
Serial.println(ret);
ret = strcmp(pnt, ".");
Serial.print("ret: ");
Serial.println(ret);
path0(cpath, up);
remwc(cpath, '/');
Serial.println(cpath);
timer0_millis = 0xFFFFFFFF-1000;
Serial.println(timer0_millis);
saveMillis = millis();
uint8_t res[16] = {0};
md5String("04839", res);
md5Print(res);
Serial.println();
md5String("21106917266", res);
md5Print(res);
Serial.println();
}
void loop() {
btnStart.read();
if (btnStart.wasPressed()) {
Serial.println(timer0_millis);
} else {
if (millis() - saveMillis >= 500) {
digitalWrite(5, !digitalRead(5));
saveMillis = millis();
}
}
}