* BRoster::_TranslateRef(): Changed error handling style. No functional change.

* Automatic white space cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30623 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2009-05-04 10:31:45 +00:00
parent edf7d67773
commit 0cc382e8d1
+47 -39
View File
@@ -2114,92 +2114,100 @@ BRoster::_TranslateRef(entry_ref *ref, BMimeType *appMeta,
// resolve ref, if necessary // resolve ref, if necessary
BEntry entry; BEntry entry;
status_t error = entry.SetTo(ref, false); status_t error = entry.SetTo(ref, false);
if (error == B_OK && entry.IsSymLink()) {
// ref refers to a link
error = entry.SetTo(ref, true);
if (error == B_OK)
error = entry.GetRef(ref);
if (error != B_OK) if (error != B_OK)
error = B_LAUNCH_FAILED_NO_RESOLVE_LINK; return error;
if (entry.IsSymLink()) {
// ref refers to a link
if (entry.SetTo(ref, true) != B_OK || entry.GetRef(ref) != B_OK)
return B_LAUNCH_FAILED_NO_RESOLVE_LINK;
} }
// init node // init node
BNode node; BNode node;
if (error == B_OK)
error = node.SetTo(ref); error = node.SetTo(ref);
if (error != B_OK)
return error;
// get permissions // get permissions
mode_t permissions; mode_t permissions;
if (error == B_OK)
error = node.GetPermissions(&permissions); error = node.GetPermissions(&permissions);
if (error == B_OK) { if (error != B_OK)
return error;
if ((permissions & S_IXUSR) && node.IsFile()) { if ((permissions & S_IXUSR) && node.IsFile()) {
// node is executable and a file -- we're done // node is executable and a file -- we're done
*appRef = *ref; *appRef = *ref;
error = appFile->SetTo(appRef, B_READ_ONLY); error = appFile->SetTo(appRef, B_READ_ONLY);
if (error != B_OK)
return error;
// get the app's signature via a BAppFileInfo // get the app's signature via a BAppFileInfo
BAppFileInfo appFileInfo; BAppFileInfo appFileInfo;
if (error == B_OK)
error = appFileInfo.SetTo(appFile); error = appFileInfo.SetTo(appFile);
if (error != B_OK)
return error;
char type[B_MIME_TYPE_LENGTH]; char type[B_MIME_TYPE_LENGTH];
bool isDocument = true; bool isDocument = true;
if (error == B_OK) {
// don't worry, if the file doesn't have a signature, just // don't worry, if the file doesn't have a signature, just
// unset the supplied object // unset the supplied object
if (appFileInfo.GetSignature(type) == B_OK) if (appFileInfo.GetSignature(type) == B_OK) {
error = appMeta->SetTo(type); error = appMeta->SetTo(type);
else if (error != B_OK)
return error;
} else
appMeta->Unset(); appMeta->Unset();
if (appFileInfo.GetType(type) == B_OK if (appFileInfo.GetType(type) == B_OK
&& !strcasecmp(type, B_APP_MIME_TYPE)) && !strcasecmp(type, B_APP_MIME_TYPE)) {
isDocument = false; isDocument = false;
} }
if (_wasDocument) if (_wasDocument)
*_wasDocument = isDocument; *_wasDocument = isDocument;
} else {
return B_OK;
}
// the node is not exectuable or not a file // the node is not exectuable or not a file
// init a node info // init a node info
BNodeInfo nodeInfo; BNodeInfo nodeInfo;
if (error == B_OK)
error = nodeInfo.SetTo(&node); error = nodeInfo.SetTo(&node);
char preferredApp[B_MIME_TYPE_LENGTH]; if (error != B_OK)
if (error == B_OK) { return error;
// if the file has a preferred app, let _TranslateType() find // if the file has a preferred app, let _TranslateType() find
// it for us // it for us
bool foundPreferredApp = false; char preferredApp[B_MIME_TYPE_LENGTH];
if (nodeInfo.GetPreferredApp(preferredApp) == B_OK) { if (nodeInfo.GetPreferredApp(preferredApp) == B_OK
error = _TranslateType(preferredApp, appMeta, appRef, && _TranslateType(preferredApp, appMeta, appRef, appFile) == B_OK) {
appFile); if (_wasDocument)
if (error == B_OK) *_wasDocument = true;
foundPreferredApp = true; return B_OK;
} }
if (!foundPreferredApp) {
// no preferred app or existing one was not found -- we // no preferred app or existing one was not found -- we
// need to get the file's type // need to get the file's type
error = B_OK; // reset error.
char fileType[B_MIME_TYPE_LENGTH];
// get the type from the file, or guess a type // get the type from the file, or guess a type
if (nodeInfo.GetType(fileType) != B_OK) char fileType[B_MIME_TYPE_LENGTH];
if (nodeInfo.GetType(fileType) != B_OK) {
error = _SniffFile(ref, &nodeInfo, fileType); error = _SniffFile(ref, &nodeInfo, fileType);
if (error != B_OK)
return error;
}
// now let _TranslateType() do the actual work // now let _TranslateType() do the actual work
if (error == B_OK) { error = _TranslateType(fileType, appMeta, appRef, appFile);
error = _TranslateType(fileType, appMeta, appRef, if (error != B_OK)
appFile); return error;
}
}
}
if (_wasDocument) if (_wasDocument)
*_wasDocument = true; *_wasDocument = true;
}
} return B_OK;
return error;
} }
// _TranslateType // _TranslateType