本文整理汇总了C++中BString::RemoveAll方法的典型用法代码示例。如果您正苦于以下问题:C++ BString::RemoveAll方法的具体用法?C++ BString::RemoveAll怎么用?C++ BString::RemoveAll使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BString
的用法示例。
在下文中一共展示了BString::RemoveAll方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: cmd
bool
SftpClient::Connect(const string& server, const string& login,
const string& passwd)
{
bool rc = false;
BString cmd("sftp ");
BString host(server.c_str());
BString port;
if (host.FindFirst(':'))
host.MoveInto(port, host.FindFirst(':'), host.Length());
port.RemoveAll(":");
if (port.Length())
cmd << "-oPort=" << port << " ";
cmd << login.c_str();
cmd << "@" << host.String();
printf("COMMAND: '%s'\n", cmd.String());
SetCommandLine(cmd.String());
rc = SpawningUploadClient::Connect(server, login, passwd);
BString reply;
ssize_t len;
if ((len = ReadReply(&reply)) < 0) {
fprintf(stderr, _GetLongReadText(), len);
return false;
}
fprintf(stderr, _GetReplyText(), reply.String());
if (reply.FindFirst("Connecting to ") != 0)
return false;
if ((len = ReadReply(&reply)) < 0) {
fprintf(stderr, _GetLongReadText(), len);
return false;
}
fprintf(stderr, _GetReplyText(), reply.String());
if (reply.FindFirst(/*[pP]*/"assword:") < 0)
return false;
write(OutputPipe(), passwd.c_str(), strlen(passwd.c_str()));
write(OutputPipe(), "\n", 1);
if ((len = ReadReply(&reply)) < 0) {
fprintf(stderr, _GetLongReadText(), len);
return false;
}
fprintf(stderr, _GetReplyText(), reply.String());
if (reply != "\n")
return false;
if ((len = ReadReply(&reply)) < 0) {
fprintf(stderr, _GetLongReadText(), len);
return false;
}
fprintf(stderr, _GetReplyText(), reply.String());
if (reply.FindFirst("sftp>") < 0)
return false;
return rc;
}
示例2: BString
BString
MSNP::FindSHA1D(string msnobject)
{
BString str = BString(msnobject.c_str());
BString ret;
int32 index = str.FindFirst("SHA1D=");
index += 7;
str.CopyInto(ret, index, (int32) 27);
ret.RemoveAll("/");
return ret.String();
}
示例3: strcpy
/*
* Given the local file path of a new file,
* run the script to upload it to Dropbox
*/
BString *
add_file_to_dropbox(const char * filepath)
{
//return get_or_put("db_put.py",filepath, local_to_db_filepath(filepath));
char * argv[3];
argv[0] = "db_put.py";
BString db_filepath = local_to_db_filepath(filepath);
const char * tmp = db_filepath.String();
char not_const[db_filepath.CountChars()];
strcpy(not_const,tmp);
argv[2] = not_const;
char not_const2[strlen(filepath)];
strcpy(not_const2,filepath);
argv[1] = not_const2;
BString *result = run_python_script(argv,3);
result->RemoveAll("\n"); //trim trailing new lines
return result;
}
示例4:
/* isCue
* checks if selected file is a cue file (checks by file extension)
* if yes, returns true
*/
bool
ProjectTypeSelector::isCue()
{
BString *SelectedFile = (BString*)FileList->FirstItem();
BString SelectedFileTMP;
BString FileExtension;
BString tmp;
//get file extension
SelectedFile->CopyInto(SelectedFileTMP, 0, (int)SelectedFile->Length());
SelectedFileTMP.RemoveAll("/");
for(int i = 3; i > 0; i--) {
tmp.SetTo(SelectedFileTMP.ByteAt((SelectedFileTMP.Length() - i)), 1);
FileExtension.Insert(tmp.String(), FileExtension.Length());
}
FileExtension.ToUpper();
if(FileExtension.Compare("CUE") == 0)
return true;
return false;
}
示例5: if
/*
* Given a single line of the output of db_delta.py
* Figures out what to do and does it.
* (adds and removes files and directories)
*/
int
App::parse_command(BString command)
{
command.RemoveAll("\n"); //remove trailing whitespace
if(command.Compare("RESET") == 0)
{
printf("Burn Everything. 8D\n");
status_t err = stop_watching(be_app_messenger);
if(err != B_OK) printf("stop_watching error: %s\n",strerror(err));
BDirectory dir = BDirectory(local_path_string);
rm_rf(&dir);
BString str = BString("/"); //create_local_path wants a remote path
create_local_directory(&str);
this->recursive_watch(&dir);
}
else if(command.Compare("FILE ",5) == 0)
{
BString path, dirpath, partial_path;
BPath *bpath;
int32 last_space = command.FindLast(" ");
command.CopyInto(path,5,last_space - 5);
path.CopyInto(dirpath,0,path.FindLast("/"));
create_local_directory(&dirpath);
//TODO fix watching new dirs
bpath = new BPath(db_to_local_filepath(path.String()).String());
BEntry new_file = BEntry(bpath->Path());
if(new_file.InitCheck() && new_file.Exists()) {
this->new_paths.AddItem((void*)bpath);
} else {
this->edited_paths.AddItem((void*)bpath);
}
printf("create a file at |%s|\n",path.String());
char *argv[3];
argv[0] = "db_get.py";
char not_const1[path.CountChars() + 1];
strcpy(not_const1,path.String());
argv[1] = not_const1;
BString tmp = db_to_local_filepath(path.String());
char not_const2[tmp.CountChars() + 1]; //plus one for null
strcpy(not_const2,tmp.String());
argv[2] = not_const2;
//create/update file
//potential problem: takes awhile to do this step
// having watching for dir turned off is risky.
BString * b = run_python_script(argv,3);
delete b;
//start watching the new/updated file
node_ref nref;
new_file = BEntry(db_to_local_filepath(path.String()).String());
new_file.GetNodeRef(&nref);
status_t err = watch_node(&nref,B_WATCH_STAT,be_app_messenger);
BString parent_rev;
command.CopyInto(parent_rev,last_space + 1, command.CountChars() - (last_space+1));
BNode node = BNode(db_to_local_filepath(path.String()).String());
set_parent_rev(&node,&parent_rev);
}
else if(command.Compare("FOLDER ",7) == 0)
{
BString path;
command.CopyInto(path,7,command.FindLast(" ") - 7);
//ignore the creation message
BPath bpath = BPath(db_to_local_filepath(path.String()).String());
BPath *actually_exists = find_existing_subpath(&bpath);
this->new_paths.AddItem((void*)actually_exists);
//create all nescessary dirs in path
printf("create a folder at |%s|\n", path.String());
create_local_directory(&path);
//start watching the new dir
BDirectory existing_dir = BDirectory(actually_exists->Path());
recursive_watch(&existing_dir);
}
else if(command.Compare("REMOVE ",7) == 0)
{
//TODO: deal with Dropbox file paths being case-insensitive
//which here means all lower case
BString path;
command.CopyInto(path,7,command.Length() - 7);
const char * pathstr = db_to_local_filepath(path.String()).String();
BPath *bpath = new BPath(pathstr);
//TODO: check if it exists...
this->removed_paths.AddItem((void*)bpath);
//.........这里部分代码省略.........
示例6: f
void
UrlWrapper::RefsReceived(BMessage* msg)
{
char buff[B_PATH_NAME_LENGTH];
int32 index = 0;
entry_ref ref;
char* args[] = { const_cast<char*>("urlwrapper"), buff, NULL };
status_t err;
while (msg->FindRef("refs", index++, &ref) == B_OK) {
BFile f(&ref, B_READ_ONLY);
BNodeInfo ni(&f);
BString mimetype;
BString extension(ref.name);
extension.Remove(0, extension.FindLast('.') + 1);
if (f.InitCheck() == B_OK && ni.InitCheck() == B_OK) {
ni.GetType(mimetype.LockBuffer(B_MIME_TYPE_LENGTH));
mimetype.UnlockBuffer();
// Internet Explorer Shortcut
if (mimetype == "text/x-url" || extension == "url") {
// http://filext.com/file-extension/URL
// http://www.cyanwerks.com/file-format-url.html
off_t size;
if (f.GetSize(&size) < B_OK)
continue;
BString contents;
BString url;
if (f.ReadAt(0LL, contents.LockBuffer(size), size) < B_OK)
continue;
contents.UnlockBuffer();
while (contents.Length()) {
BString line;
int32 cr = contents.FindFirst('\n');
if (cr < 0)
cr = contents.Length();
//contents.MoveInto(line, 0, cr);
contents.CopyInto(line, 0, cr);
contents.Remove(0, cr+1);
line.RemoveAll("\r");
if (!line.Length())
continue;
if (!line.ICompare("URL=", 4)) {
line.MoveInto(url, 4, line.Length());
break;
}
}
if (url.Length()) {
BPrivate::Support::BUrl u(url.String());
args[1] = (char*)u.String();
mimetype = kURLHandlerSigBase;
mimetype += u.Proto();
err = be_roster->Launch(mimetype.String(), 1, args + 1);
if (err != B_OK && err != B_ALREADY_RUNNING)
err = be_roster->Launch(kAppSig, 1, args + 1);
continue;
}
}
if (mimetype == "text/x-webloc" || extension == "webloc") {
// OSX url shortcuts
// XML file + resource fork
off_t size;
if (f.GetSize(&size) < B_OK)
continue;
BString contents;
BString url;
if (f.ReadAt(0LL, contents.LockBuffer(size), size) < B_OK)
continue;
contents.UnlockBuffer();
int state = 0;
while (contents.Length()) {
BString line;
int32 cr = contents.FindFirst('\n');
if (cr < 0)
cr = contents.Length();
contents.CopyInto(line, 0, cr);
contents.Remove(0, cr+1);
line.RemoveAll("\r");
if (!line.Length())
continue;
int32 s, e;
switch (state) {
case 0:
if (!line.ICompare("<?xml", 5))
state = 1;
break;
case 1:
if (!line.ICompare("<plist", 6))
state = 2;
break;
case 2:
if (!line.ICompare("<dict>", 6))
state = 3;
break;
case 3:
if (line.IFindFirst("<key>URL</key>") > -1)
state = 4;
break;
case 4:
if ((s = line.IFindFirst("<string>")) > -1
//.........这里部分代码省略.........
示例7: num
//.........这里部分代码省略.........
tempString.ReplaceFirst("%1", theNick);
BString nickString = theIdent << "@" << theAddress;
tempString.ReplaceFirst("%2", nickString.String());
tempString += "\n";
BMessage msg (M_DISPLAY);
PackDisplay (&msg, tempString.String(), C_WHOIS, C_BACKGROUND, F_SERVER);
PostActive (&msg);
}
return true;
case RPL_WHOISIDLE: // 317
{
BString theNick (GetWord (data, 4)),
tempString ("[x] "),
tempString2 ("[x] "),
theTime (GetWord (data, 5)),
signOnTime (GetWord (data, 6));
int64 idleTime (strtoul(theTime.String(), NULL, 0));
tempString += B_TRANSLATE("Idle");
tempString += ": ";
tempString += DurationString(idleTime * 1000 * 1000);
tempString += "\n";
int32 serverTime = strtoul(signOnTime.String(), NULL, 0);
struct tm ptr;
time_t st;
char str[80];
st = serverTime;
localtime_r (&st, &ptr);
strftime (str,80,"%A %b %d %Y %I:%M %p %Z", &ptr);
BString signOnTimeParsed (str);
signOnTimeParsed.RemoveAll ("\n");
tempString2 += B_TRANSLATE("Signon");
tempString2 += ": ";
tempString2 += signOnTimeParsed;
tempString2 += "\n";
BMessage msg (M_DISPLAY);
PackDisplay (&msg, tempString.String(), C_WHOIS, C_BACKGROUND, F_SERVER);
PostActive (&msg);
PackDisplay (&msg, tempString2.String(), C_WHOIS, C_BACKGROUND, F_SERVER);
PostActive (&msg);
}
return true;
case RPL_ENDOFWHOIS: // 318
case RPL_ENDOFNAMES: // 366
case RPL_ENDOFWHOWAS: // 369
{
// nothing
}
return true;
case RPL_WHOISCHANNELS: // 319
{
BString theChannels (RestOfString (data, 5));
theChannels.RemoveFirst(":");
BMessage display (M_DISPLAY);
BString buffer = "[x] ";
buffer += B_TRANSLATE("Channels");
buffer += ": ";
示例8: network
void
NetworkPrefsView::MessageReceived (BMessage * msg)
{
switch (msg->what)
{
case M_NETWORK_DEFAULTS:
if (fActiveNetwork.HasString ("name"))
vision_app->SetNetwork (fActiveNetwork.FindString ("name"), &fActiveNetwork);
fActiveNetwork = vision_app->GetNetwork ("defaults");
fNetworkMenu->MenuItem ()->SetLabel ("Defaults");
SetupDefaults (fActiveNetwork);
fDupeItem->SetEnabled (false);
fRemoveItem->SetEnabled (false);
break;
case M_CHOOSE_NETWORK:
{
BMenuItem *item (NULL);
msg->FindPointer ("source", reinterpret_cast < void **>(&item));
SaveCurrentNetwork ();
fActiveNetwork = vision_app->GetNetwork (item->Label ());
fNetworkMenu->MenuItem ()->SetLabel (item->Label ());
UpdatePersonalData (fActiveNetwork);
UpdateNetworkData (fActiveNetwork);
if (BMessenger (fServerPrefs).IsValid ())
fServerPrefs->SetNetworkData (&fActiveNetwork);
fDupeItem->SetEnabled (true);
fRemoveItem->SetEnabled (true);
}
break;
case M_ADD_NEW_NETWORK:
{
if (msg->HasString ("text"))
{
fNetPrompt = NULL;
BString network (msg->FindString ("text"));
network.RemoveAll (" ");
BMenu *menu (fNetworkMenu->Menu ());
for (int32 i = 0; i < menu->CountItems (); i++)
{
BMenuItem *item (menu->ItemAt (i));
if (item && network == item->Label ())
{
dynamic_cast < BInvoker * >(item)->Invoke ();
return;
}
}
BMessage newNet (VIS_NETWORK_DATA);
newNet.AddString ("name", network.String ());
vision_app->SetNetwork (network.String (), &newNet);
BMenuItem *item (new BMenuItem (network.String (), new BMessage (M_CHOOSE_NETWORK)));
menu->AddItem (item, 0);
item->SetTarget (this);
dynamic_cast < BInvoker * >(item)->Invoke ();
}
else
{
BString promptText = B_TRANSLATE("Network Name");
promptText += ": ";
fNetPrompt = new PromptWindow (BPoint (Window ()->Frame ().left + Window ()->Frame ().Width () / 2, Window ()->Frame ().top + Window ()->Frame ().Height () / 2),
promptText.String(), B_TRANSLATE("Add Network"), NULL, this, new BMessage (M_ADD_NEW_NETWORK), NULL, false);
fNetPrompt->Show ();
}
}
break;
case M_REMOVE_CURRENT_NETWORK:
{
const char *name (fActiveNetwork.FindString ("name"));
vision_app->RemoveNetwork (name);
BMenu *menu (fNetworkMenu->Menu ());
for (int32 i = 0; i < menu->CountItems (); i++)
{
BMenuItem *item (menu->ItemAt (i));
if (!strcmp (item->Label (), name))
{
delete menu->RemoveItem (i);
fActiveNetwork.MakeEmpty ();
dynamic_cast < BInvoker * >(menu->ItemAt (0))->Invoke ();
break;
}
}
}
break;
case M_DUPE_CURRENT_NETWORK:
{
if (msg->HasString ("text"))
{
fDupePrompt = NULL;
BString network (msg->FindString ("text"));
network.RemoveAll (" ");
BMenu *menu (fNetworkMenu->Menu ());
for (int32 i = 0; i < menu->CountItems (); i++)
{
BMenuItem *item (menu->ItemAt (i));
if (item && network == item->Label ())
{
dynamic_cast < BInvoker * >(item)->Invoke ();
//.........这里部分代码省略.........
示例9:
void
CDDBQuery::_ReadLine(BString &buffer)
{
buffer = "";
unsigned char ch;
for (;;) {
if (fSocket.Receive(&ch, 1) <= 0)
break;
// This function is more work than it should have to be. FreeDB lookups can sometimes
// be in a non-ASCII encoding, such as Latin-1 or UTF8. The problem lies in Be's implementation
// of BString, which does not support UTF8 string assignments. The Be Book says we have to
// flatten the string and adjust the character counts manually. Man, this *really* sucks.
if (ch > 0x7f) {
// Obviously non-ASCII character detected. Let's see if it's Latin-1 or UTF8.
unsigned char *string, *stringindex;
int32 length = buffer.Length();
// The first byte of a UTF8 string will be 110xxxxx
if ( ((ch & 0xe0) == 0xc0)) {
// This is UTF8. Get the next byte
unsigned char ch2;
if (fSocket.Receive(&ch2, 1) <= 0)
break;
if ( (ch2 & 0xc0) == 0x80) {
string = (unsigned char *)buffer.LockBuffer(length + 10);
stringindex = string + length;
stringindex[0] = ch;
stringindex[1] = ch2;
stringindex[2] = 0;
buffer.UnlockBuffer();
// We've added the character, so go to the next iteration
continue;
}
}
// Nope. Just Latin-1. Convert to UTF8 and assign
char srcstr[2], deststr[5];
int32 srclen, destlen, state;
srcstr[0] = ch;
srcstr[1] = '\0';
srclen = 1;
destlen = 5;
memset(deststr, 0, 5);
if (convert_to_utf8(B_ISO1_CONVERSION, srcstr, &srclen, deststr, &destlen, &state) == B_OK) {
// We succeeded. Amazing. Now we hack the string into having the character
length = buffer.Length();
string = (unsigned char *)buffer.LockBuffer(length + 10);
stringindex = string + length;
for (int i = 0; i < 5; i++) {
stringindex[i] = deststr[i];
if (!deststr[i])
break;
}
buffer.UnlockBuffer();
} else {
// well, we tried. Append the character to the string and live with it
buffer += ch;
}
} else
buffer += ch;
if (ch == '\n')
break;
}
buffer.RemoveAll("\r");
STRACE(("<%s", buffer.String()));
}
示例10: TypeLookupConstraints
status_t
CppLanguage::ParseTypeExpression(const BString &expression,
TeamTypeInformation* info,
Type*& _resultType) const
{
status_t result = B_OK;
Type* baseType = NULL;
BString parsedName = expression;
BString baseTypeName;
parsedName.RemoveAll(" ");
int32 modifierIndex = -1;
for (int32 i = parsedName.Length() - 1; i >= 0; i--) {
if (parsedName[i] == '*' || parsedName[i] == '&')
modifierIndex = i;
}
if (modifierIndex >= 0) {
parsedName.CopyInto(baseTypeName, 0, modifierIndex);
parsedName.Remove(0, modifierIndex);
} else
baseTypeName = parsedName;
result = info->LookupTypeByName(baseTypeName, TypeLookupConstraints(),
baseType);
if (result != B_OK)
return result;
BReference<Type> typeRef;
typeRef.SetTo(baseType, true);
if (!parsedName.IsEmpty()) {
AddressType* derivedType = NULL;
// walk the list of modifiers trying to add each.
for (int32 i = 0; i < parsedName.Length(); i++) {
address_type_kind typeKind;
switch (parsedName[i]) {
case '*':
{
typeKind = DERIVED_TYPE_POINTER;
break;
}
case '&':
{
typeKind = DERIVED_TYPE_REFERENCE;
break;
}
default:
{
return B_BAD_VALUE;
}
}
if (derivedType == NULL) {
result = baseType->CreateDerivedAddressType(typeKind,
derivedType);
} else {
result = derivedType->CreateDerivedAddressType(typeKind,
derivedType);
}
if (result != B_OK)
return result;
typeRef.SetTo(derivedType, true);
}
_resultType = derivedType;
} else
_resultType = baseType;
typeRef.Detach();
return result;
}
示例11: nick
//.........这里部分代码省略.........
if (client)
{
BMessage msg (M_CHANNEL_MODE);
msg.AddString("nick", theNick.String());
msg.AddString("mode", theMode.String());
msg.AddString("target", theTarget.String());
client->PostMessage (&msg);
}
else
{
BMessage msg (M_DISPLAY);
BString buffer;
theMode.RemoveFirst(":");
buffer << "*** User mode changed: " << theMode << "\n";
PackDisplay (&msg, buffer.String(), 0, 0, true);
PostActive (&msg);
}
return true;
}
if(firstWord == "NOTICE") // _server_ notice
{
BString theNotice (RestOfString(data, 3));
const char *expansions[1];
theNotice.RemoveFirst(":");
expansions[0] = theNotice.String();
theNotice = ExpandKeyed (events[E_SNOTICE], "R", expansions);
Display (theNotice.String(), 0, 0, true);
return true;
}
if (firstWord == "ERROR") // server error (on connect?)
{
BString theError (RestOfString (data, 2));
theError.RemoveAll (":");
theError.Append ("\n");
Display (theError.String(), &quitColor);
isConnecting = false;
return true;
}
if(secondWord == "NOTICE") // _user_ notice
{
BString theNick (GetNick (data)),
ident (GetIdent (data)),
address (GetAddress (data)),
addy;
addy << theNick << "@" << address;
BMessage aMsg (M_IS_IGNORED), reply;
bool ignored;
aMsg.AddString ("server", serverName.String());
aMsg.AddString ("nick", theNick.String());
aMsg.AddString ("address", addy.String());
be_app_messenger.SendMessage (&aMsg, &reply);
reply.FindBool ("ignored", &ignored);
if (ignored) return true;
BString theNotice = RestOfString(data, 4);
theNotice.RemoveFirst(":");
if(theNotice[0] == '\1')
{
ParseCTCPResponse(theNick, theNotice);
return true;
}
const char *expansions[4];
BString tempString;
expansions[0] = theNick.String();
expansions[1] = theNotice.String();
expansions[2] = ident.String();
expansions[3] = address.String();
tempString = ExpandKeyed (events[E_UNOTICE], "NRIA", expansions);
BMessage display (M_DISPLAY);
PackDisplay (&display, tempString.String(), ¬iceColor, 0, true);
PostActive (&display);
return true;
}
return ParseENums (data, secondWord.String());
}
示例12: TypeLookupConstraints
status_t
CLanguageFamily::ParseTypeExpression(const BString& expression,
TeamTypeInformation* info, Type*& _resultType) const
{
status_t result = B_OK;
Type* baseType = NULL;
BString parsedName = expression;
BString baseTypeName;
BString arraySpecifier;
parsedName.RemoveAll(" ");
int32 modifierIndex = -1;
modifierIndex = parsedName.FindFirst('*');
if (modifierIndex == -1)
modifierIndex = parsedName.FindFirst('&');
if (modifierIndex == -1)
modifierIndex = parsedName.FindFirst('[');
if (modifierIndex == -1)
modifierIndex = parsedName.Length();
parsedName.MoveInto(baseTypeName, 0, modifierIndex);
modifierIndex = parsedName.FindFirst('[');
if (modifierIndex >= 0) {
parsedName.MoveInto(arraySpecifier, modifierIndex,
parsedName.Length() - modifierIndex);
}
result = info->LookupTypeByName(baseTypeName, TypeLookupConstraints(),
baseType);
if (result != B_OK)
return result;
BReference<Type> typeRef;
typeRef.SetTo(baseType, true);
if (!parsedName.IsEmpty()) {
AddressType* derivedType = NULL;
// walk the list of modifiers trying to add each.
for (int32 i = 0; i < parsedName.Length(); i++) {
if (!IsModifierValid(parsedName[i]))
return B_BAD_VALUE;
address_type_kind typeKind;
switch (parsedName[i]) {
case '*':
{
typeKind = DERIVED_TYPE_POINTER;
break;
}
case '&':
{
typeKind = DERIVED_TYPE_REFERENCE;
break;
}
default:
{
return B_BAD_VALUE;
}
}
if (derivedType == NULL) {
result = baseType->CreateDerivedAddressType(typeKind,
derivedType);
} else {
result = derivedType->CreateDerivedAddressType(typeKind,
derivedType);
}
if (result != B_OK)
return result;
typeRef.SetTo(derivedType, true);
}
_resultType = derivedType;
} else
_resultType = baseType;
if (!arraySpecifier.IsEmpty()) {
ArrayType* arrayType = NULL;
int32 startIndex = 1;
do {
int32 size = strtoul(arraySpecifier.String() + startIndex,
NULL, 10);
if (size < 0)
return B_ERROR;
if (arrayType == NULL) {
result = _resultType->CreateDerivedArrayType(0, size, true,
arrayType);
} else {
result = arrayType->CreateDerivedArrayType(0, size, true,
arrayType);
}
if (result != B_OK)
//.........这里部分代码省略.........
示例13: GetToolVersion
const char* VersionControl::GetToolVersion(const char* path)
{
thread_id thread;
int in, out, err;
const char** argv;
int argc = 0;
const char* threadname = "Helios:GetToolVersion()";
char buffer[1000];
size_t bytesread;
BString version = "";
buffer[0] = 0;
argv = (const char**)malloc(sizeof(char*) * (5));
argv[argc++] = strdup(path);
argv[argc++] = strdup("--version");
argv[argc] = NULL;
thread = pipe_command(argc, argv, in, out, err);
rename_thread(thread, threadname);
resume_thread(thread);
while ((bytesread = read(err, (void*)buffer, 1000)) > 0) {
buffer[bytesread] = 0;
version.Append(buffer);
// printf("%s: %s\n",path, buffer);
snooze(10000);
}
while ((bytesread = read(out, (void*)buffer, 1000)) > 0) {
buffer[bytesread] = 0;
version.Append(buffer);
// printf("%s: %s\n",path, buffer);
snooze(10000);
}
free(argv);
close(in);
close(out);
close(err);
char str[1024];
int32 length = 1024;
int32 state = 0;
int32 srclen = version.Length();
convert_to_utf8(B_ISO1_CONVERSION, version.String(), &srclen, str, &length, &state);
str[length] = 0;
version = str;
// --version option not supported?
if (version.FindFirst("--version") != B_ERROR) {
version = path;
version << ": "
<< _T("(could not get version info)"); // "STR:(could not get version info)"
} else {
version.RemoveAll("\n");
version.RemoveAll("\t");
// for case-insensitivity replace instead of remove...
version.IReplaceAll("Copyright ", "");
version.IReplaceAll("(c) ", B_UTF8_COPYRIGHT);
version.IReplaceAll("(c)", B_UTF8_COPYRIGHT);
}
return strdup(version.String());
}
示例14: f
void
UrlWrapper::RefsReceived(BMessage* msg)
{
char buff[B_PATH_NAME_LENGTH];
int32 index = 0;
entry_ref ref;
char* args[] = { const_cast<char*>("urlwrapper"), buff, NULL };
status_t err;
while (msg->FindRef("refs", index++, &ref) == B_OK) {
BFile f(&ref, B_READ_ONLY);
BNodeInfo ni(&f);
BString mimetype;
if (f.InitCheck() == B_OK && ni.InitCheck() == B_OK) {
ni.GetType(mimetype.LockBuffer(B_MIME_TYPE_LENGTH));
mimetype.UnlockBuffer();
// Internet Explorer Shortcut
if (mimetype == "text/x-url") {
// http://filext.com/file-extension/URL
// http://www.cyanwerks.com/file-format-url.html
off_t size;
if (f.GetSize(&size) < B_OK)
continue;
BString contents, url;
if (f.ReadAt(0LL, contents.LockBuffer(size), size) < B_OK)
continue;
while (contents.Length()) {
BString line;
int32 cr = contents.FindFirst('\n');
if (cr < 0)
cr = contents.Length();
//contents.MoveInto(line, 0, cr);
contents.CopyInto(line, 0, cr);
contents.Remove(0, cr+1);
line.RemoveAll("\r");
if (!line.Length())
continue;
if (!line.ICompare("URL=", 4)) {
line.MoveInto(url, 4, line.Length());
break;
}
}
if (url.Length()) {
args[1] = (char*)url.String();
err = be_roster->Launch("application/x-vnd.Be.URL.http", 1,
args+1);
continue;
}
}
// NetPositive Bookmark or any file with a META:url attribute
if (f.ReadAttr("META:url", B_STRING_TYPE, 0LL, buff,
B_PATH_NAME_LENGTH) > 0) {
err = be_roster->Launch("application/x-vnd.Be.URL.http", 1,
args+1);
continue;
}
}
}
}
示例15: RipThread
//.........这里部分代码省略.........
}
// make the directory only if the user wants to create playlists
if (make_playlist && create_directory(playlistfolder.String(),0777)!=B_OK)
{
BEntry playdir(playlistfolder.String());
if (!playdir.Exists())
{
BString errormsg;
#ifdef SYS_ZETA
errormsg=_T("Uh-oh... SimplyVorbis couldn't create the folder '");
errormsg << playlistfolder << _T("RIpViewMultiline2");
BAlert *alert = new BAlert("SimplyVorbis",errormsg.String(),_T("OK"));
#else
errormsg="Uh-oh... SimplyVorbis couldn't create the folder '";
errormsg << playlistfolder << "' for the playlists.\n\nThis may have happened for a number of different reasons, but "
"most often happens when making playlists on a non-BeOS drive, such as one shared "
"with Windows. Certain characters, such as question marks and slashes cause problems "
"on these disks. You may want to check the names of the artist, album, and songs for "
"such characters and put a good substitute in its place or remove the character entirely."
"For the moment, your music will be created, but the playlist will not. Sorry.";
BAlert *alert = new BAlert("SimplyVorbis",errormsg.String(),"OK");
#endif
alert->Go();
make_playlist=false;
}
}
// *Sigh* FAT32 volumes don't support use of question marks. I wonder what else... :(
if (!write_attributes)
{
destfolder.RemoveAll("?");
playlistfolder.RemoveAll("?");
}
BString trackPrefix;
switch(trackname)
{
case 0: // Artist
{
trackPrefix = gCDData.Artist();
trackPrefix+=" - ";
break;
}
case 1: // Album
{
trackPrefix = gCDData.Album();
trackPrefix+=" - ";
break;
}
case 2: // Artist & Album
{
trackPrefix = gCDData.Artist();
trackPrefix << " - " << gCDData.Album() << " - ";
break;
}
default: // no special grouping
{
break;
}
}
// Populate the list of tracks to be ripped
view->Window()->Lock();