mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-11-15 13:17:41 +03:00
Merging merge
This commit is contained in:
parent
1072e7df68
commit
3d2cc3027d
36
v/unix.c
36
v/unix.c
@ -228,6 +228,7 @@ _unix_file_watch(u2_ufil* fil_u,
|
|||||||
static c3_c*
|
static c3_c*
|
||||||
_unix_file_form(u2_udir* dir_u,
|
_unix_file_form(u2_udir* dir_u,
|
||||||
u2_noun pre,
|
u2_noun pre,
|
||||||
|
u2_bean ket,
|
||||||
u2_noun ext)
|
u2_noun ext)
|
||||||
{
|
{
|
||||||
c3_c* pre_c = u2_cr_string(pre);
|
c3_c* pre_c = u2_cr_string(pre);
|
||||||
@ -235,14 +236,18 @@ _unix_file_form(u2_udir* dir_u,
|
|||||||
c3_w pax_w = strlen(dir_u->pax_c);
|
c3_w pax_w = strlen(dir_u->pax_c);
|
||||||
c3_w pre_w = strlen(pre_c);
|
c3_w pre_w = strlen(pre_c);
|
||||||
c3_w ext_w = strlen(ext_c);
|
c3_w ext_w = strlen(ext_c);
|
||||||
c3_c* pax_c = c3_malloc(pax_w + 1 + pre_w + 1 + ext_w + 1);
|
c3_w ket_w = (u2_yes == ket) ? 1 : 0;
|
||||||
|
c3_c* pax_c = c3_malloc(pax_w + 1 + pre_w + 1 + ket_w + ext_w + 1);
|
||||||
|
|
||||||
strncpy(pax_c, dir_u->pax_c, pax_w);
|
strncpy(pax_c, dir_u->pax_c, pax_w);
|
||||||
pax_c[pax_w] = '/';
|
pax_c[pax_w] = '/';
|
||||||
strncpy(pax_c + pax_w + 1, pre_c, pre_w);
|
strncpy(pax_c + pax_w + 1, pre_c, pre_w);
|
||||||
pax_c[pax_w + 1 + pre_w] = '.';
|
pax_c[pax_w + 1 + pre_w] = '.';
|
||||||
strncpy(pax_c + pax_w + 1 + pre_w + 1, ext_c, ext_w);
|
if ( u2_yes == ket ) {
|
||||||
pax_c[pax_w + 1 + pre_w + 1 + ext_w] = '\0';
|
pax_c[pax_w + 1 + pre_w + 1] = '^';
|
||||||
|
}
|
||||||
|
strncpy(pax_c + pax_w + 1 + pre_w + 1 + ket_w, ext_c, ext_w);
|
||||||
|
pax_c[pax_w + 1 + pre_w + 1 + ket_w + ext_w] = '\0';
|
||||||
|
|
||||||
free(pre_c); free(ext_c);
|
free(pre_c); free(ext_c);
|
||||||
u2z(pre); u2z(ext);
|
u2z(pre); u2z(ext);
|
||||||
@ -617,7 +622,10 @@ _unix_file_load(u2_ufil* fil_u)
|
|||||||
{
|
{
|
||||||
u2_noun raw = _unix_load(fil_u->pax_c);
|
u2_noun raw = _unix_load(fil_u->pax_c);
|
||||||
|
|
||||||
|
if ( (0 == raw) || ('^' != fil_u->dot_c[1]) ) {
|
||||||
return raw;
|
return raw;
|
||||||
|
}
|
||||||
|
else return u2_cke_cue(raw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -668,6 +676,7 @@ _unix_file_name(u2_ufil* fil_u)
|
|||||||
else {
|
else {
|
||||||
c3_c* ext_c = fil_u->dot_c + 1;
|
c3_c* ext_c = fil_u->dot_c + 1;
|
||||||
|
|
||||||
|
ext_c = (*ext_c == '^') ? (ext_c + 1) : ext_c;
|
||||||
return u2nc(u2_ci_bytes((fil_u->dot_c - pax_c), (c3_y*)pax_c),
|
return u2nc(u2_ci_bytes((fil_u->dot_c - pax_c), (c3_y*)pax_c),
|
||||||
u2_ci_string(ext_c));
|
u2_ci_string(ext_c));
|
||||||
}
|
}
|
||||||
@ -963,7 +972,8 @@ _unix_desk_sync_tofu(u2_udir* dir_u,
|
|||||||
u2_noun ext,
|
u2_noun ext,
|
||||||
u2_noun mis)
|
u2_noun mis)
|
||||||
{
|
{
|
||||||
c3_c* pox_c = _unix_file_form(dir_u, u2k(pre), u2k(ext));
|
c3_c* pox_c = _unix_file_form(dir_u, u2k(pre), u2_no, u2k(ext));
|
||||||
|
c3_c* pux_c = _unix_file_form(dir_u, u2k(pre), u2_yes, u2k(ext));
|
||||||
u2_ufil** fil_u;
|
u2_ufil** fil_u;
|
||||||
|
|
||||||
// uL(fprintf(uH, "tofu pox_c %s op %s\n", pox_c, u2_cr_string(u2h(mis))));
|
// uL(fprintf(uH, "tofu pox_c %s op %s\n", pox_c, u2_cr_string(u2h(mis))));
|
||||||
@ -971,7 +981,8 @@ _unix_desk_sync_tofu(u2_udir* dir_u,
|
|||||||
fil_u = &(dir_u->fil_u);
|
fil_u = &(dir_u->fil_u);
|
||||||
while ( 1 ) { // XX crude!
|
while ( 1 ) { // XX crude!
|
||||||
if ( !*fil_u ||
|
if ( !*fil_u ||
|
||||||
!strcmp((*fil_u)->pax_c, pox_c) )
|
!strcmp((*fil_u)->pax_c, pox_c) ||
|
||||||
|
!strcmp((*fil_u)->pax_c, pux_c) )
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -986,25 +997,32 @@ _unix_desk_sync_tofu(u2_udir* dir_u,
|
|||||||
_unix_file_free(ded_u);
|
_unix_file_free(ded_u);
|
||||||
|
|
||||||
free(pox_c);
|
free(pox_c);
|
||||||
|
free(pux_c);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
u2_noun oat;
|
u2_noun god, oat;
|
||||||
c3_c* pax_c;
|
c3_c* pax_c;
|
||||||
|
|
||||||
if ( *fil_u ) {
|
if ( *fil_u ) {
|
||||||
u2_noun old = _unix_file_load(*fil_u);
|
u2_noun old = _unix_file_load(*fil_u);
|
||||||
c3_assert(c3__mut == u2h(mis));
|
c3_assert(c3__mut == u2h(mis));
|
||||||
|
|
||||||
oat = _unix_desk_sync_udon(u2k(u2t(mis)), old);
|
god = _unix_desk_sync_udon(u2k(u2t(mis)), old);
|
||||||
_unix_unlink((*fil_u)->pax_c);
|
_unix_unlink((*fil_u)->pax_c);
|
||||||
free((*fil_u)->pax_c);
|
free((*fil_u)->pax_c);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
c3_assert(c3__ins == u2h(mis));
|
c3_assert(c3__ins == u2h(mis));
|
||||||
oat = u2k(u2t(mis));
|
god = u2k(u2t(mis));
|
||||||
}
|
}
|
||||||
|
|
||||||
pax_c = pox_c;
|
if ( u2_yes == u2du(god) ) {
|
||||||
|
oat = u2_cke_jam(god);
|
||||||
|
pax_c = pux_c; free(pox_c);
|
||||||
|
} else {
|
||||||
|
oat = god;
|
||||||
|
pax_c = pox_c; free(pux_c);
|
||||||
|
}
|
||||||
|
|
||||||
_unix_save(pax_c, oat);
|
_unix_save(pax_c, oat);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user