ls에 의해 지정되는 허가의 집합(예를들면, rwxr-xr-x)을
동등한 의미를 갖는 팔진수값으로 바꾸어주는 루틴 lsoct, 다시 반대로 바꿔주는 octls
int lsoct(char* perm)
{
int i, j, k, oct=0;
if(perm[0] == 'r') oct += 400;
if(perm[1] == 'w') oct += 200;
if(perm[2] == 'x') oct += 100;
if(perm[3] == 'r') oct += 40;
if(perm[4] == 'w') oct += 20;
if(perm[5] == 'x') oct += 10;
if(perm[6] == 'r') oct += 4;
if(perm[7] == 'w') oct += 2;
if(perm[8] == 'x') oct += 1;
i = oct % 10;
oct /= 10;
j = oct % 10;
oct /= 10;
k = oct % 10;
return(k*8*8+j*8+i);
}
char* octls(int oct)
{
char perm[10]="";
int i=6, remainder;
while(i >= 0){
remainder = oct % 10;
oct /= 10;
switch(remainder){
case 0: perm[i] = perm[i+1] = perm[i+2] = '-'; break;
case 1: perm[i+2] = 'x';
perm[i+1] = perm[i] = '-'; break;
case 2: perm[i] = perm[i+2] = '-';
perm[i+1] = 'w';
break;
case 3: perm[i+2] = 'x';
perm[i+1] = 'w';
perm[i] = '-';
break;
case 4: perm[i] = 'r';
perm[i+1] = perm[i+2] = '-';
break;
case 5: perm[i] = 'r';
perm[i+1] = '-';
perm[i+2] = 'x';
break;
case 6: perm[i] = 'r';
perm[i+1] = 'w';
perm[i+2] = '-';
break;
case 7: perm[i] = 'r';
perm[i+1] = 'w';
perm[i+2] = 'x';
break;
default : perror("wrong oct");
}
i -= 3;
}
return(perm);
}
'호기심_메모' 카테고리의 다른 글
VMware ESXi 보안 취약점(CVE-2020-3992, CVE-2019-5544) (0) | 2021.08.13 |
---|---|
HTTP Method (0) | 2021.08.13 |
지명된 화일의 내용이 변경되는 시간을 주기적으로 모니터하는 프로그램 slowwatch (0) | 2021.08.13 |
UNIX 메뉴얼에 나와있는 명세(specification)를 참조하여, chmod 작성 (0) | 2021.08.13 |
adb shell input keyevent / adb shell sendevent (0) | 2021.08.13 |