Ejemplo n.º 1
0
GMMIMEParser::~GMMIMEParser()
{
	if (itsTextSegments != NULL)
		{
		itsTextSegments->DeleteAll();
		delete itsTextSegments;
		}

	if (itsTextInfo != NULL)
		{
		JKillDirectory(itsTextDir);
		delete itsTextInfo;
		}

	if (itsAttachInfo != NULL)
		{
		JKillDirectory(itsAttachDir);
		delete itsAttachInfo;
		}
}
Ejemplo n.º 2
0
JBoolean
SyGEmptyTrashDirectory()
{
	JString trashDir;
	const JBoolean hasTrash = SyGGetTrashDirectory(&trashDir, kJFalse);
	if (hasTrash && JKillDirectory(trashDir))
		{
		JCreateDirectory(trashDir, kTrashCanPerms);
		SyGUpdateTrash();
		return kJTrue;
		}
	else if (hasTrash)
		{
		(JGetUserNotification())->ReportError(JGetString(kEmptyTrashErrorID));
		return kJFalse;
		}
	else
		{
		return kJTrue;
		}
}
Ejemplo n.º 3
0
GMApp::GMApp
(
    int*		argc,
    char*		argv[],
    JBoolean*	displayAbout,
    JString*	prevVersStr
)
    :
    JXApplication(argc, argv, kAppSignature, kGMDefaultStringData),
    itsTableDirs(NULL),
    itsHasFileDirectory(kJFalse),
    itsOpenPrefsAfterAbout(kJFalse),
    itsPrefsNew(kJFalse),
    itsAboutDialog(NULL)
{
    *displayAbout = GMCreateGlobals(this);

    if (!*displayAbout)
    {
        *prevVersStr = (GGetPrefsMgr())->GetArrowVersionStr();
        if (*prevVersStr == GMGetVersionNumberStr())
        {
            prevVersStr->Clear();
        }
        else
        {
            *displayAbout = kJTrue;
            if (prevVersStr->BeginsWith("1") ||
                    prevVersStr->BeginsWith("0") ||
                    prevVersStr->BeginsWith("2.0b"))
            {
                itsOpenPrefsAfterAbout	= kJTrue;
            }
        }
    }
    else
    {
        itsPrefsNew				= kJTrue;
        itsOpenPrefsAfterAbout	= kJTrue;
        prevVersStr->Clear();
    }

    GMMDIServer* mdi = new GMMDIServer(this);
    assert(mdi != NULL);

    itsTableDirs = new JPtrArray<GMessageTableDir>(JPtrArrayT::kForgetAll);
    assert(itsTableDirs != NULL);

    itsEditDirs = new JPtrArray<GMessageEditDir>(JPtrArrayT::kForgetAll);
    assert(itsEditDirs != NULL);

    itsLockTasks = new JPtrArray<GLockFileTask>(JPtrArrayT::kForgetAll);
    assert(itsLockTasks != NULL);

    if (*displayAbout)
    {
        if (!(JGetUserNotification())->AcceptLicense())
        {
            exit(0);
        }
    }

    JString home;
    if (JGetHomeDirectory(&home))
    {
        JAppendDirSeparator(&home);
        home += kArrowFilesDir;
        if (!JDirectoryExists(home))
        {
            JError err = JCreateDirectory(home);
            if (err.OK())
            {
                itsFileDirectory	= home;
                itsHasFileDirectory	= kJTrue;
            }
        }
        else
        {
            if (JKillDirectory(home))
            {
                JCreateDirectory(home);
            }
            if (JDirectoryExists(home))
            {
                itsFileDirectory	= home;
                itsHasFileDirectory	= kJTrue;
            }
        }
    }

    JBoolean ok = OpenSession();

    if (*argc > 1)
    {
        mdi->HandleCmdLineOptions(*argc, argv);
    }
    else if (!ok)
    {
        OpenSystemMailbox();
    }

    OpenMailboxWindowIfNeeded();

    ListenTo(GGetPrefsMgr());

    /*	JString test("pulp");
    	JPtrArray<JString> names;
    	GParseNameList(test, names);
    	JPtrArray<JString> aliases;
    	aliases.SetCompareFunction(JCompareStringsCaseSensitive);
    	JSize i = 1;
    	while (i <= names.GetElementCount())
    		{
    		JString& name = *(names.NthElement(i));
    		JString alias;
    		JString fcc;
    		if (GGetAddressBookMgr()->NameIsAlias(name, alias, fcc))
    			{
    			JIndex findex;
    			if (!aliases.SearchSorted(&name, JOrderedSetT::kAnyMatch, &findex))
    				{
    				GParseNameList(alias, names);
    				aliases.InsertSorted(names.NthElement(i));
    				names.RemoveElement(i);
    				}
    			else
    				{
    				names.DeleteElement(i);
    				}
    			}
    		else
    			{
    			i++;
    			}
    		}
    	aliases.DeleteAll();
    	const JSize count	= names.GetElementCount();
    	for (JIndex i = 1; i <= count; i++)
    		{
    		cout << *(names.NthElement(i)) << endl;
    		}*/
}
Ejemplo n.º 4
0
JError
JRemoveVCS
	(
	const JCharacter*	fullName,
	const JBoolean		sync,
	JProcess**			returnP
	)
{
	if (returnP != NULL)
		{
		*returnP = NULL;
		}

	if (!JNameUsed(fullName))
		{
		return JDirEntryDoesNotExist(fullName);
		}

	JString path, name;
	JSplitPathAndName(fullName, &path, &name);

	const JString origPath = JGetCurrentDirectory();
	if (JChangeDirectory(path) != kJNoError)
		{
		return JAccessDenied(path);
		}

	JVCSType type     = JGetVCSType(path);
	JError err        = JNoError();
	JBoolean tryPlain = kJFalse;
	JString cmd;
	JProcess* p = NULL;
	if (type == kJSVNType || type == kJGitType)
		{
		const JCharacter *binary = NULL;
		if (type == kJSVNType)
			{
			binary = "svn rm --force ";
			}
		else if (type == kJGitType)
			{
			binary = "git rm -rf ";
			}

		cmd  = binary;
		cmd += JPrepArgForExec(name);
		err  = JProcess::Create(&p, cmd);
		if (err.OK())
			{
			p->WaitUntilFinished();
			}

		if (p != NULL && !p->SuccessfulFinish())
			{
			err      = JAccessDenied(fullName);
			tryPlain = kJTrue;
			}
		}
	else if (type == kJUnknownVCSType)
		{
		tryPlain = kJTrue;
		}
	else
		{
		err = JUnsupportedVCS(fullName);
		}

	if (tryPlain && JKillDirectory(fullName, sync, returnP))
		{
		err = JNoError();
		}
	else if (tryPlain)
		{
		err = JAccessDenied(fullName);
		}

	delete p;
	JChangeDirectory(origPath);
	return err;
}