feature(format) mv permissions

This commit is contained in:
coderaiser 2014-06-26 02:46:48 -04:00
parent e023165f75
commit 1751bf8f14
4 changed files with 117 additions and 113 deletions

View file

@ -435,8 +435,6 @@ var Util, DOM, CloudFunc;
owner = DOM.getCurrentOwner(current);
mode = DOM.getCurrentMode(current);
mode = CloudFunc.getNumericPermissions(mode);
if (name !== '..')
files.push({
name : name,

View file

@ -188,111 +188,6 @@ var Util;
return CloudFunc.NAME + ' - ' + (pPath || CloudFunc.Path);
};
/**
* Функция переводит права из цыфрового вида в символьный
* @param pPerm_s - строка с правами доступа
* к файлу в 8-миричной системе
*/
this.getSymbolicPermissions = function(pPerm_s) {
var lType, lOwner, lGroup, lAll,
perms = pPerm_s && pPerm_s.toString(),
lPermissions = perms;
/*
S_IRUSR 0000400 protection: readable by owner
S_IWUSR 0000200 writable by owner
S_IXUSR 0000100 executable by owner
S_IRGRP 0000040 readable by group
S_IWGRP 0000020 writable by group
S_IXGRP 0000010 executable by group
S_IROTH 0000004 readable by all
S_IWOTH 0000002 writable by all
S_IXOTH 0000001 executable by all
*/
if (perms) {
/* тип файла */
lType = perms.toString().charAt(0);
switch (lType-0) {
case 1: /* обычный файл */
lType='-';
break;
case 2: /* байт-ориентированное (символьное) устройство*/
lType='c';
break;
case 4: /* каталог */
lType='d';
break;
default:
lType='-';
}
/* оставляем последние 3 символа*/
perms = perms.length > 5 ? perms.substr(3) : perms.substr(2);
/* Рекомендации гугла советуют вместо string[3]
* использовать string.charAt(3)
*/
/*
http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml?showone=Standards_features#Standards_features
Always preferred over non-standards featuresFor
maximum portability and compatibility, always
prefer standards features over non-standards
features (e.g., string.charAt(3) over string[3]
and element access with DOM functions instead
of using an application-specific shorthand).
*/
/* Переводим в двоичную систему */
lOwner = (perms[0] - 0).toString(2),
lGroup = (perms[1] - 0).toString(2),
lAll = (perms[2] - 0).toString(2),
/* переводим в символьную систему*/
lPermissions =
(lOwner[0] - 0 > 0 ? 'r' : '-') +
(lOwner[1] - 0 > 0 ? 'w' : '-') +
(lOwner[2] - 0 > 0 ? 'x' : '-') +
' ' +
(lGroup[0] - 0 > 0 ? 'r' : '-') +
(lGroup[1] - 0 > 0 ? 'w' : '-') +
(lGroup[2] - 0 > 0 ? 'x' : '-') +
' ' +
(lAll[0]- 0 > 0 ? 'r' : '-') +
(lAll[1]- 0 > 0 ? 'w' : '-') +
(lAll[2]- 0 > 0 ? 'x' : '-');
}
return lPermissions;
};
/**
* Функция конвертирует права доступа к файлам из символьного вида
* в цыфровой
*/
this.getNumericPermissions = function(pPerm_s) {
var owner, group, all,
perms = pPerm_s,
length = perms && perms.length === 11;
if (length) {
owner = (pPerm_s[0] === 'r' ? 4 : 0) +
(pPerm_s[1] === 'w' ? 2 : 0) +
(pPerm_s[2] === 'x' ? 1 : 0),
group = (pPerm_s[4] === 'r' ? 4 : 0) +
(pPerm_s[5] === 'w' ? 2 : 0) +
(pPerm_s[6] === 'x' ? 1 : 0),
all = (pPerm_s[8] === 'r' ? 4 : 0) +
(pPerm_s[9] === 'w' ? 2 : 0) +
(pPerm_s[10] === 'x' ? 1 : 0);
/* добавляем 2 цифры до 5 */
perms = '00' + owner + group + all;
}
return perms;
};
/** Функция получает адреса каждого каталога в пути
* возвращаеться массив каталогов
@ -416,7 +311,7 @@ var Util;
name : linkResult,
size : '<dir>',
owner : '.',
mode : CloudFunc.getSymbolicPermissions('.')
mode : '--- --- ---'
});
}
@ -436,7 +331,7 @@ var Util;
}
owner = file.owner || 'root';
mode = CloudFunc.getSymbolicPermissions(file.mode);
mode = file.mode;
linkResult = Util.render(templateLink, {
link : link,

View file

@ -140,13 +140,11 @@
size = isDir ? 'dir' : stat.size;
}
size = format.size(size);
file = {
'name' : name,
'size' : size,
'size' : format.size(size),
'owner' : owner,
'mode' : mode
'mode' : format.permissions.symbolic(mode)
};
files.push(file);

View file

@ -42,4 +42,117 @@
return size;
};
/**
* Функция переводит права из цыфрового вида в символьный
* @param perms - строка с правами доступа
* к файлу в 8-миричной системе
*/
exports.permissions = {
symbolic: function(perms) {
var type, owner, group, all,
permsStr = '',
permissions = '';
/*
S_IRUSR 0000400 protection: readable by owner
S_IWUSR 0000200 writable by owner
S_IXUSR 0000100 executable by owner
S_IRGRP 0000040 readable by group
S_IWGRP 0000020 writable by group
S_IXGRP 0000010 executable by group
S_IROTH 0000004 readable by all
S_IWOTH 0000002 writable by all
S_IXOTH 0000001 executable by all
*/
if (perms) {
permsStr = perms.toString();
/* тип файла */
type = permsStr.charAt(0);
switch (type - 0) {
case 1: /* обычный файл */
type='-';
break;
case 2: /* байт-ориентированное (символьное) устройство*/
type='c';
break;
case 4: /* каталог */
type='d';
break;
default:
type='-';
}
/* оставляем последние 3 символа*/
if (permsStr.length > 5)
permsStr = permsStr.substr(3);
else
permsStr = permsStr.substr(2);
/* Рекомендации гугла советуют вместо string[3]
* использовать string.charAt(3)
*/
/*
http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml?showone=Standards_features#Standards_features
Always preferred over non-standards featuresFor
maximum portability and compatibility, always
prefer standards features over non-standards
features (e.g., string.charAt(3) over string[3]
and element access with DOM functions instead
of using an application-specific shorthand).
*/
/* Переводим в двоичную систему */
owner = (permsStr[0] - 0).toString(2),
group = (permsStr[1] - 0).toString(2),
all = (permsStr[2] - 0).toString(2),
/* переводим в символьную систему*/
permissions =
(owner[0] - 0 > 0 ? 'r' : '-') +
(owner[1] - 0 > 0 ? 'w' : '-') +
(owner[2] - 0 > 0 ? 'x' : '-') +
' ' +
(group[0] - 0 > 0 ? 'r' : '-') +
(group[1] - 0 > 0 ? 'w' : '-') +
(group[2] - 0 > 0 ? 'x' : '-') +
' ' +
(all[0]- 0 > 0 ? 'r' : '-') +
(all[1]- 0 > 0 ? 'w' : '-') +
(all[2]- 0 > 0 ? 'x' : '-');
}
return permissions;
},
/**
* Функция конвертирует права доступа к файлам из символьного вида
* в цыфровой
*/
numeric: function(pPerm_s) {
var owner, group, all,
perms = pPerm_s,
length = perms && perms.length === 11;
if (length) {
owner = (pPerm_s[0] === 'r' ? 4 : 0) +
(pPerm_s[1] === 'w' ? 2 : 0) +
(pPerm_s[2] === 'x' ? 1 : 0),
group = (pPerm_s[4] === 'r' ? 4 : 0) +
(pPerm_s[5] === 'w' ? 2 : 0) +
(pPerm_s[6] === 'x' ? 1 : 0),
all = (pPerm_s[8] === 'r' ? 4 : 0) +
(pPerm_s[9] === 'w' ? 2 : 0) +
(pPerm_s[10] === 'x' ? 1 : 0);
/* добавляем 2 цифры до 5 */
perms = '00' + owner + group + all;
}
return perms;
}
}
})();