/* 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; }
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); }
/* 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; }