mirror of
https://github.com/vgough/encfs.git
synced 2025-06-20 19:57:52 +02:00
add direct-load method so that encfsctl cat can work with direct cipher paths
git-svn-id: http://encfs.googlecode.com/svn/trunk@19 db9cf616-1c43-0410-9cb8-a902689de0d6
This commit is contained in:
parent
2123f3580f
commit
4b707677b5
@ -706,6 +706,22 @@ shared_ptr<FileNode> DirNode::renameNode( const char *from, const char *to,
|
|||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
shared_ptr<FileNode> DirNode::directLookup( const char *path )
|
||||||
|
{
|
||||||
|
return shared_ptr<FileNode>(
|
||||||
|
new FileNode( this,
|
||||||
|
config->fsSubVersion,
|
||||||
|
"unknown", path,
|
||||||
|
config->cipher, config->key,
|
||||||
|
config->blockSize, config->blockMACBytes,
|
||||||
|
config->blockMACRandBytes,
|
||||||
|
config->uniqueIV,
|
||||||
|
config->externalIVChaining,
|
||||||
|
config->forceDecode,
|
||||||
|
config->reverseEncryption,
|
||||||
|
config->allowHoles) );
|
||||||
|
}
|
||||||
|
|
||||||
shared_ptr<FileNode> DirNode::findOrCreate( const char *plainName)
|
shared_ptr<FileNode> DirNode::findOrCreate( const char *plainName)
|
||||||
{
|
{
|
||||||
shared_ptr<FileNode> node;
|
shared_ptr<FileNode> node;
|
||||||
|
@ -135,6 +135,10 @@ public:
|
|||||||
shared_ptr<FileNode> openNode( const char *plaintextName,
|
shared_ptr<FileNode> openNode( const char *plaintextName,
|
||||||
const char *requestor, int flags, int *openResult );
|
const char *requestor, int flags, int *openResult );
|
||||||
|
|
||||||
|
/* For internal use - open a cipher file directly
|
||||||
|
*/
|
||||||
|
shared_ptr<FileNode> directLookup( const char *realPath );
|
||||||
|
|
||||||
std::string cipherPath( const char *plaintextPath );
|
std::string cipherPath( const char *plaintextPath );
|
||||||
std::string plainPath( const char *cipherPath );
|
std::string plainPath( const char *cipherPath );
|
||||||
|
|
||||||
|
@ -334,6 +334,19 @@ int processContents( const shared_ptr<EncFS_Root> &rootInfo,
|
|||||||
int errCode = 0;
|
int errCode = 0;
|
||||||
shared_ptr<FileNode> node = rootInfo->root->openNode( path, "encfsctl",
|
shared_ptr<FileNode> node = rootInfo->root->openNode( path, "encfsctl",
|
||||||
O_RDONLY, &errCode );
|
O_RDONLY, &errCode );
|
||||||
|
|
||||||
|
if(!node)
|
||||||
|
{
|
||||||
|
// try opening directly, so a cipher-path can be passed in
|
||||||
|
node = rootInfo->root->directLookup( path );
|
||||||
|
if(node)
|
||||||
|
{
|
||||||
|
errCode = node->open( O_RDONLY );
|
||||||
|
if(errCode < 0)
|
||||||
|
node.reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(!node)
|
if(!node)
|
||||||
{
|
{
|
||||||
cerr << "unable to open " << path << "\n";
|
cerr << "unable to open " << path << "\n";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user