Exemple #1
1
/* returns 0 if ok, error code otherwise */
static int extract(int argc, char **argv)
{
	int strip, verbose, test, err, non, noff, doc = 0, page = 0;
	char *marker, s[MAXLINE], start[MAXLINE];
	FILE *fpin, *fpout;
	/* unused variables
	   int cont = 1;
	   char *t[MAXLINE];
	*/

	verbose = existFlag(argc, argv, VERBFLAG);
	if (verbose) banner();
	err = getFiles(argc, argv, &fpin, &fpout,
			strip = existFlag(argc, argv, REVFLAG));
	if (err) return err;
	strcpy(start, STARTDOC);
	marker = getFlagName(argc, argv, MARKFLAG);
	strcat(start, marker == NULL ? AUTODOC : marker);
	non = strlen(start);
	noff = strlen(ENDDOC);
	test = (!strip) && existFlag(argc, argv, TESTFLAG);
	if (test) preamble(fpout);
	while (fgets(s, MAXLINE, fpin) != NULL)
		doc = stripdoc(fpout,s,start,doc,non,noff,verbose,strip,&page);
	if (test) closing(fpout);
	if (verbose) fputc('\n', stderr);
	fclose(fpin);
	fclose(fpout);
	return 0;
}
Exemple #2
0
        void visit(FilterPhotosWithFlags* flags) override
        {
            m_filterResult.joins.insert(FilterData::FlagsWithPhotos);

            QStringList conditions;

            for(const auto& it: flags->flags)
            {
                const QString flagName = getFlagName(it.first);
                const int flagValue = it.second;

                conditions.append(QString(TAB_FLAGS ".%1 = '%2'")
                                  .arg(flagName)
                                  .arg(flagValue));
            }

            QString merged_conditions;

            switch (flags->mode)
            {
                case FilterPhotosWithFlags::Mode::And:
                    merged_conditions = conditions.join(" AND ");
                    break;

                case FilterPhotosWithFlags::Mode::Or:
                    merged_conditions = "( " + conditions.join(" OR ") + " )";
                    break;
            }

            m_filterResult.conditions.append(merged_conditions);
        }
            virtual void visit(ModifyFlagAction* action)
            {
                QStringList setActions;

                for(auto entry: action->flags)
                {
                    const QString name = getFlagName(entry.first);
                    const int value = entry.second;
                    const QString setAction = QString("%1 = %2").arg(name).arg(value);

                    setActions.append(setAction);
                }

                const char* table = TAB_FLAGS;
                const QString assignments = setActions.join(", ");

                m_result = QString("UPDATE %1 SET %2 WHERE photo_id IN (%3)").arg(table).arg(assignments);
            }
Exemple #4
0
/* returns 0 if ok, > 0 if error */
static int getFiles(int argc, char **argv, FILE **fpin, FILE **fpout, int strip)
{
	int out, err = 0;
	char *name, s[MAXLINE], t[MAXLINE];

	name = getFlagName(argc, argv, OUTFLAG);
	out = name != NULL;
	if (out) strcpy(t, name);
	name = (char *) argv[argc - 1];
	if ((argc == 0) || (*name == '-') || (out && !strcmp(t, name))) {
		fputs("extract: no file name given\n", stderr);
		err = 1;
	}
	else {
		strcpy(s, name);
		if (!hasExtension(s)) strcat(s, ASEXT);
		if (!out) {
			strcpy(t, s);
			killExtension(t);
			strcat(t, TEXEXT);
		}
		*fpin = fopen(s, "r");
		if (*fpin == NULL) {
			fputs("extract: cannot open ", stderr);
			fputs(s, stderr);
			fputs("\n", stderr);
			err = 2;
		}
		else {
			*fpout = (strip && !out) ? stdout : fopen(t, "w");
			if (*fpout == NULL) {
				fclose(*fpin);
				fputs("extract: cannot create ", stderr);
				fputs(t, stderr);
				fputs("\n", stderr);
				err = 3;
			}
		}
	}
	return err;
}