unsigned long SysPutEA(unsigned char *name, unsigned long numargs, RXSTRING args[], char *queuename, RXSTRING *retstr) { unsigned long rc; /* Ret code */ unsigned long act; /* open action */ void *fealist; /* fealist buffer */ EAOP2 eaop; /* eaop structure */ PFEA2 pfea; /* pfea structure */ HFILE handle; /* file handle */ if (numargs != 3 || !RXVALIDSTRING(args[0]) || !RXVALIDSTRING(args[1])) return INVALID_ROUTINE; if (rc = DosOpen2(args[0].strptr, &handle, &act, 0L, 0, OPEN_ACTION_OPEN_IF_EXISTS, OPEN_ACCESS_READWRITE + OPEN_SHARE_DENYWRITE + OPEN_FLAGS_FAIL_ON_ERROR + OPEN_FLAGS_WRITE_THROUGH, NULL)) { RETVAL(rc) } if (DosAllocMem((PPVOID)&fealist, 0x00010000L, AllocFlag)) { BUILDRXSTRING(retstr, ERROR_NOMEM); return VALID_ROUTINE; } eaop.fpFEA2List = (PFEA2LIST)fealist;/* Set memory for the FEA */ eaop.fpGEA2List = NULL; /* GEA is unused */ pfea = &eaop.fpFEA2List->list[0]; /* point to first FEA */ pfea->fEA = '\0'; /* set the flags */ /* Size of FEA name field */ pfea->cbName = (BYTE)args[1].strlength; /* Size of Value for this one */ pfea->cbValue = (SHORT)args[2].strlength; /* Set the name of this FEA */ strcpy((PSZ)pfea->szName, args[1].strptr); /* Set the EA value */ memcpy((PSZ)pfea->szName+(pfea->cbName+1), args[2].strptr, args[2].strlength); pfea->oNextEntryOffset = 0; /* no next entry */ eaop.fpFEA2List->cbList = /* Set the total size var */ sizeof(ULONG) + sizeof(FEA2) + pfea->cbName + pfea->cbValue; /* set the file info */ rc = DosSetFileInfo(handle, 2, (PSZ)&eaop, sizeof(EAOP2)); DosClose(handle); /* Close the File */ DosFreeMem(fealist); /* Free the memory */ RETVAL(rc) }
extern "C" int pthread_join (pthread_t thread, void **value_ptr) { /* Reap Existing Threads */ //dmtcp::ThreadInfo::reapThreads(); /* We change things up a bit here. Since we don't allow the user's pthread_join() to have an effect, we don't call the mtcp "delete_thread_on_pthread_join()" function here unless we decide not to synchronize this call to pthread_join(). We DO need to call it from the thread reaper reapThread(), however, which is in pthreadwrappers.cpp. */ //if (!dmtcp::ThreadInfo::isUserJoinable(thread)) { //return EINVAL; //} void *return_addr = GET_RETURN_ADDRESS(); if (!shouldSynchronize(return_addr)) { int retval = _real_pthread_join(thread, value_ptr); if (retval == 0) { dmtcp::ThreadInfo::reapThread(thread); } return retval; } int retval = 0; log_entry_t my_entry = create_pthread_join_entry(my_clone_id, pthread_join_event, thread, value_ptr); if (SYNC_IS_REPLAY) { WRAPPER_REPLAY_START(pthread_join); int saved_retval = (long) RETVAL(my_entry, pthread_join); WRAPPER_REPLAY_END(pthread_join); retval = _real_pthread_join(thread, value_ptr); JASSERT(retval == saved_retval); if (value_ptr != NULL) { JASSERT(*value_ptr == GET_FIELD(my_entry, pthread_join, ret_value_ptr)); } } else if (SYNC_IS_RECORD) { WRAPPER_LOG_RESERVE_SLOT(pthread_join); retval = _real_pthread_join(thread, value_ptr); if (value_ptr != NULL) { SET_FIELD2(my_entry, pthread_join, ret_value_ptr, *value_ptr); } WRAPPER_LOG_UPDATE_ENTRY(pthread_join); } return retval; }
PyMODINIT_FUNC init_dbscan(void) #endif { #if PY_MAJOR_VERSION >= 3 PyObject *m = PyModule_Create(&module_definition); #else Py_InitModule4("_dbscan", dbscan_funcs, dbscan_module_doc, (PyObject*)NULL, PYTHON_API_VERSION); #endif import_array(); return RETVAL(m); }
unsigned long SysGetEA(unsigned char *name, unsigned long numargs, RXSTRING args[], char *queuename, RXSTRING *retstr) { long rc; /* Ret code */ unsigned char geabuff[300]; /* buffer for GEA */ unsigned long act; /* open action */ void *fealist; /* fealist buffer */ EAOP2 eaop; /* eaop structure */ PGEA2 pgea; /* pgea structure */ PFEA2 pfea; /* pfea structure */ HFILE handle; /* file handle */ RXSTEMDATA ldp; /* stem data */ if (numargs != 3 || !RXVALIDSTRING(args[0]) || !RXVALIDSTRING(args[1]) || !RXVALIDSTRING(args[2])) return INVALID_ROUTINE; ldp.count = 0; /* get the stem variable name */ strcpy(ldp.varname, args[2].strptr); ldp.stemlen = args[2].strlength; strupr(ldp.varname); /* uppercase the name */ if (rc = DosOpen(args[0].strptr, &handle, &act, 0L, 0, OPEN_ACTION_OPEN_IF_EXISTS, OPEN_ACCESS_READONLY + OPEN_SHARE_DENYREADWRITE + OPEN_FLAGS_FAIL_ON_ERROR + OPEN_FLAGS_WRITE_THROUGH, NULL)) { RETVAL(rc) } /* get the file status info */ if (DosAllocMem((PPVOID)&fealist, 0x00010000L, AllocFlag)) { BUILDRXSTRING(retstr, ERROR_NOMEM); return VALID_ROUTINE; } /* FEA and GEA lists */ eaop.fpGEA2List = (PGEA2LIST)geabuff; eaop.fpFEA2List = (PFEA2LIST)fealist; eaop.oError = 0; /* no error occurred yet */ pgea = &eaop.fpGEA2List->list[0]; /* point to first GEA */ eaop.fpGEA2List->cbList = sizeof(ULONG) + sizeof(GEA2) + args[1].strlength; eaop.fpFEA2List->cbList = (ULONG)0xffff; /* fill in the EA name length */ pgea->cbName = (BYTE)args[1].strlength; strcpy(pgea->szName, args[1].strptr);/* fill in the name */ pgea->oNextEntryOffset = 0; /* fill in the next offset */ /* read the extended attribute*/ rc = DosQueryFileInfo(handle, 3, (PSZ)&eaop, sizeof(EAOP2)); DosClose(handle); /* close the file */ if (eaop.fpFEA2List->cbList <= sizeof(ULONG)) rc = ERROR_EAS_NOT_SUPPORTED; /* this is error also */ sprintf(retstr->strptr, "%d", rc); /* format return code */ retstr->strlength = strlen(retstr->strptr); if (rc) { /* failure? */ DosFreeMem(fealist); /* error, get out */ return VALID_ROUTINE; } pfea = &(eaop.fpFEA2List->list[0]); /* point to the first FEA */ ldp.shvb.shvnext = NULL; ldp.shvb.shvname.strptr = ldp.varname; ldp.shvb.shvname.strlength = ldp.stemlen; ldp.shvb.shvnamelen = ldp.stemlen; ldp.shvb.shvvalue.strptr = ((PSZ)pfea->szName+(pfea->cbName+1)); ldp.shvb.shvvalue.strlength = pfea->cbValue; ldp.shvb.shvvaluelen = ldp.shvb.shvvalue.strlength; ldp.shvb.shvcode = RXSHV_SET; ldp.shvb.shvret = 0; if (RexxVariablePool(&ldp.shvb) == RXSHV_BADN) { DosFreeMem(fealist); /* free our buffer */ return INVALID_ROUTINE; /* error on non-zero */ } DosFreeMem(fealist); /* free our buffer */ return VALID_ROUTINE; }
unsigned long SysQueryEAList(unsigned char *name, unsigned long numargs, RXSTRING args[], char *queuename, RXSTRING *retstr) { int countEA = 0; unsigned long rc; unsigned long act; unsigned long numberEA; unsigned long offset = 0; char szStemName[256] = {0}; char fileName[512] = {0}; char *pszStemIdx = NULL; char buffer[EABUFFER]; char eanum[5]; FEA2 *ptrBuffer; FILESTATUS3 status; HFILE handle; /* Only two arguments accepted */ if (numargs != 2 || !RXVALIDSTRING(args[0]) || !RXVALIDSTRING(args[1]) || args[0].strlength > 255) return INVALID_ROUTINE; /* remember stem name */ strcpy(szStemName, args[1].strptr); strupr(szStemName); strcpy(fileName, args[0].strptr); // check for '.' and if not there make it so if (szStemName[args[1].strlength-1] != '.') szStemName[args[1].strlength] = '.'; // pointer to the index part of stem pszStemIdx = &(szStemName[strlen(szStemName)]); // query to find if it is a file or directory if(DosQueryPathInfo(fileName, FIL_STANDARD, (void *)&status, sizeof(status))) return INVALID_ROUTINE; // if it is a file open it if(!(status.attrFile&FILE_DIRECTORY)) { if(DosOpen(fileName, &handle, &act, 0L, 0, FILE_OPEN, OPEN_ACCESS_READONLY + OPEN_SHARE_DENYWRITE + OPEN_FLAGS_FAIL_ON_ERROR, NULL)) return INVALID_ROUTINE; } numberEA = (ULONG)-1; rc = DosEnumAttribute(ENUMEA_REFTYPE_PATH, fileName, 1, (PVOID)&buffer, EABUFFER, (ULONG *)&numberEA, ENUMEA_LEVEL_NO_VALUE); if(rc) RETVAL(0) // if it is a file - close it if (!(status.attrFile&FILE_DIRECTORY)) DosClose(handle); ptrBuffer = (FEA2 *)&buffer; // set pointer to statrt of buffer if(numberEA != 0) { // if there are EAs found do { ptrBuffer = (PDENA2)((char *)ptrBuffer + offset); itoa(++countEA, pszStemIdx, 10); rc = SetRexxVariable(szStemName, ptrBuffer->szName); offset = ptrBuffer->oNextEntryOffset; } while ( ptrBuffer->oNextEntryOffset != 0 ); } // end of handling EAs // setup the 0 index with number of classes strcpy(pszStemIdx, "0"); sprintf(eanum, "%d", numberEA); rc = SetRexxVariable(szStemName, eanum); RETVAL(1); }
int main(int argc, char *argv[]) { rpmts ts = NULL; QVA_t qva = &rpmQVKArgs; poptContext optCon; int ec = 0; xsetprogname(argv[0]); /* Portability call -- see system.h */ optCon = rpmcliInit(argc, argv, optionsTable); if (rpmcliPipeOutput && initPipe()) exit(EXIT_FAILURE); if (target) { rpmFreeMacros(NULL); rpmFreeRpmrc(); rpmReadConfigFiles(rpmcliRcfile, target); } ts = rpmtsCreate(); switch (mode) { case MODE_QUERY: if (!poptPeekArg(optCon)) argerror(_("no arguments given for query")); qva->qva_queryFormat = queryformat; qva->qva_source = source; qva->qva_specQuery = rpmspecQuery; ec = rpmcliQuery(ts, qva, (ARGV_const_t) poptGetArgs(optCon)); break; case MODE_PARSE: { const char * spath; if (!poptPeekArg(optCon)) argerror(_("no arguments given for parse")); while ((spath = poptGetArg(optCon)) != NULL) { rpmSpec spec = rpmSpecParse(spath, (RPMSPEC_ANYARCH|RPMSPEC_FORCE), NULL); if (spec == NULL) { ec++; continue; } fprintf(stdout, "%s", rpmSpecGetSection(spec, RPMBUILD_NONE)); rpmSpecFree(spec); } break; } case MODE_UNKNOWN: if (poptPeekArg(optCon) != NULL || argc <= 1 || rpmIsVerbose()) { printUsage(optCon, stderr, 0); ec = argc; } break; } rpmtsFree(ts); if (finishPipe()) ec = EXIT_FAILURE; free(qva->qva_queryFormat); rpmcliFini(optCon); return RETVAL(ec); }
PyMODINIT_FUNC initumath(void) #endif { PyObject *m, *d, *s, *s2, *c_api; int UFUNC_FLOATING_POINT_SUPPORT = 1; #ifdef NO_UFUNC_FLOATING_POINT_SUPPORT UFUNC_FLOATING_POINT_SUPPORT = 0; #endif /* Create the module and add the functions */ #if defined(NPY_PY3K) m = PyModule_Create(&moduledef); #else m = Py_InitModule("umath", methods); #endif if (!m) { goto err; } /* Import the array */ if (_import_array() < 0) { if (!PyErr_Occurred()) { PyErr_SetString(PyExc_ImportError, "umath failed: Could not import array core."); } goto err; } /* Initialize the types */ if (PyType_Ready(&PyUFunc_Type) < 0) goto err; /* Add some symbolic constants to the module */ d = PyModule_GetDict(m); c_api = NpyCapsule_FromVoidPtr((void *)PyUFunc_API, NULL); if (PyErr_Occurred()) { goto err; } PyDict_SetItemString(d, "_UFUNC_API", c_api); Py_DECREF(c_api); if (PyErr_Occurred()) { goto err; } /* Load the ufunc operators into the array module's namespace */ if (InitOperators(d) < 0) { goto err; } PyDict_SetItemString(d, "pi", s = PyFloat_FromDouble(NPY_PI)); Py_DECREF(s); PyDict_SetItemString(d, "e", s = PyFloat_FromDouble(NPY_E)); Py_DECREF(s); PyDict_SetItemString(d, "euler_gamma", s = PyFloat_FromDouble(NPY_EULER)); Py_DECREF(s); #define ADDCONST(str) PyModule_AddIntConstant(m, #str, UFUNC_##str) #define ADDSCONST(str) PyModule_AddStringConstant(m, "UFUNC_" #str, UFUNC_##str) ADDCONST(ERR_IGNORE); ADDCONST(ERR_WARN); ADDCONST(ERR_CALL); ADDCONST(ERR_RAISE); ADDCONST(ERR_PRINT); ADDCONST(ERR_LOG); ADDCONST(ERR_DEFAULT); ADDCONST(SHIFT_DIVIDEBYZERO); ADDCONST(SHIFT_OVERFLOW); ADDCONST(SHIFT_UNDERFLOW); ADDCONST(SHIFT_INVALID); ADDCONST(FPE_DIVIDEBYZERO); ADDCONST(FPE_OVERFLOW); ADDCONST(FPE_UNDERFLOW); ADDCONST(FPE_INVALID); ADDCONST(FLOATING_POINT_SUPPORT); ADDSCONST(PYVALS_NAME); #undef ADDCONST #undef ADDSCONST PyModule_AddIntConstant(m, "UFUNC_BUFSIZE_DEFAULT", (long)NPY_BUFSIZE); PyModule_AddObject(m, "PINF", PyFloat_FromDouble(NPY_INFINITY)); PyModule_AddObject(m, "NINF", PyFloat_FromDouble(-NPY_INFINITY)); PyModule_AddObject(m, "PZERO", PyFloat_FromDouble(NPY_PZERO)); PyModule_AddObject(m, "NZERO", PyFloat_FromDouble(NPY_NZERO)); PyModule_AddObject(m, "NAN", PyFloat_FromDouble(NPY_NAN)); #if defined(NPY_PY3K) s = PyDict_GetItemString(d, "true_divide"); PyDict_SetItemString(d, "divide", s); #endif s = PyDict_GetItemString(d, "conjugate"); s2 = PyDict_GetItemString(d, "remainder"); /* Setup the array object's numerical structures with appropriate ufuncs in d*/ PyArray_SetNumericOps(d); PyDict_SetItemString(d, "conj", s); PyDict_SetItemString(d, "mod", s2); initscalarmath(m); if (!intern_strings()) { goto err; } return RETVAL(m); err: /* Check for errors */ if (!PyErr_Occurred()) { PyErr_SetString(PyExc_RuntimeError, "cannot load umath module."); } return RETVAL(NULL); }
int main(int argc, char *argv[]) { rpmts ts = NULL; enum modes bigMode = MODE_UNKNOWN; #if defined(IAM_RPMQV) QVA_t qva = &rpmQVKArgs; #endif #ifdef IAM_RPMEIU struct rpmInstallArguments_s * ia = &rpmIArgs; #endif poptContext optCon; int ec = 0; #ifdef IAM_RPMEIU int i; #endif xsetprogname(argv[0]); /* Portability call -- see system.h */ optCon = rpmcliInit(argc, argv, optionsTable); /* Set the major mode based on argv[0] */ #ifdef IAM_RPMQV if (rstreq(xgetprogname(), "rpmquery")) bigMode = MODE_QUERY; if (rstreq(xgetprogname(), "rpmverify")) bigMode = MODE_VERIFY; #endif #if defined(IAM_RPMQV) /* Jumpstart option from argv[0] if necessary. */ switch (bigMode) { case MODE_QUERY: qva->qva_mode = 'q'; break; case MODE_VERIFY: qva->qva_mode = 'V'; break; case MODE_INSTALL: case MODE_ERASE: case MODE_UNKNOWN: default: break; } #endif #ifdef IAM_RPMQV if (bigMode == MODE_UNKNOWN || (bigMode & MODES_QV)) { switch (qva->qva_mode) { case 'q': bigMode = MODE_QUERY; break; case 'V': bigMode = MODE_VERIFY; break; } if (qva->qva_sourceCount) { if (qva->qva_sourceCount > 1) argerror(_("one type of query/verify may be performed at a " "time")); } if (qva->qva_flags && (bigMode & ~MODES_QV)) argerror(_("unexpected query flags")); if (qva->qva_queryFormat && (bigMode & ~MODES_QV)) argerror(_("unexpected query format")); if (qva->qva_source != RPMQV_PACKAGE && (bigMode & ~MODES_QV)) argerror(_("unexpected query source")); } #endif /* IAM_RPMQV */ #ifdef IAM_RPMEIU if (bigMode == MODE_UNKNOWN || (bigMode & MODES_IE)) { int iflags = (ia->installInterfaceFlags & (INSTALL_UPGRADE|INSTALL_FRESHEN| INSTALL_INSTALL|INSTALL_REINSTALL)); int eflags = (ia->installInterfaceFlags & INSTALL_ERASE); if (iflags & eflags) argerror(_("only one major mode may be specified")); else if (iflags) bigMode = MODE_INSTALL; else if (eflags) bigMode = MODE_ERASE; } #endif /* IAM_RPMEIU */ #if defined(IAM_RPMEIU) if (!( bigMode == MODE_INSTALL ) && (ia->probFilter & (RPMPROB_FILTER_REPLACEPKG | RPMPROB_FILTER_OLDPACKAGE))) argerror(_("only installation and upgrading may be forced")); if (bigMode != MODE_INSTALL && (ia->probFilter & RPMPROB_FILTER_FORCERELOCATE)) argerror(_("files may only be relocated during package installation")); if (ia->relocations && ia->prefix) argerror(_("cannot use --prefix with --relocate or --excludepath")); if (bigMode != MODE_INSTALL && ia->relocations) argerror(_("--relocate and --excludepath may only be used when installing new packages")); if (bigMode != MODE_INSTALL && ia->prefix) argerror(_("--prefix may only be used when installing new packages")); if (ia->prefix && ia->prefix[0] != '/') argerror(_("arguments to --prefix must begin with a /")); if (!(bigMode & MODES_IE) && (ia->installInterfaceFlags & INSTALL_HASH)) argerror(_("--hash (-h) may only be specified during package " "installation and erasure")); if (!(bigMode & MODES_IE) && (ia->installInterfaceFlags & INSTALL_PERCENT)) argerror(_("--percent may only be specified during package " "installation and erasure")); if (bigMode != MODE_INSTALL && (ia->probFilter & RPMPROB_FILTER_REPLACEPKG)) argerror(_("--replacepkgs may only be specified during package " "installation")); if (bigMode != MODE_INSTALL && (ia->transFlags & RPMTRANS_FLAG_NODOCS)) argerror(_("--excludedocs may only be specified during package " "installation")); if (bigMode != MODE_INSTALL && ia->incldocs) argerror(_("--includedocs may only be specified during package " "installation")); if (ia->incldocs && (ia->transFlags & RPMTRANS_FLAG_NODOCS)) argerror(_("only one of --excludedocs and --includedocs may be " "specified")); if (bigMode != MODE_INSTALL && (ia->probFilter & RPMPROB_FILTER_IGNOREARCH)) argerror(_("--ignorearch may only be specified during package " "installation")); if (bigMode != MODE_INSTALL && (ia->probFilter & RPMPROB_FILTER_IGNOREOS)) argerror(_("--ignoreos may only be specified during package " "installation")); if (bigMode != MODE_INSTALL && bigMode != MODE_ERASE && (ia->probFilter & (RPMPROB_FILTER_DISKSPACE|RPMPROB_FILTER_DISKNODES))) argerror(_("--ignoresize may only be specified during package " "installation")); if ((ia->installInterfaceFlags & UNINSTALL_ALLMATCHES) && bigMode != MODE_ERASE) argerror(_("--allmatches may only be specified during package " "erasure")); if ((ia->transFlags & RPMTRANS_FLAG_ALLFILES) && bigMode != MODE_INSTALL) argerror(_("--allfiles may only be specified during package " "installation")); if ((ia->transFlags & RPMTRANS_FLAG_JUSTDB) && bigMode != MODE_INSTALL && bigMode != MODE_ERASE) argerror(_("--justdb may only be specified during package " "installation and erasure")); if (bigMode != MODE_INSTALL && bigMode != MODE_ERASE && bigMode != MODE_VERIFY && (ia->transFlags & (RPMTRANS_FLAG_NOSCRIPTS | _noTransScripts | _noTransTriggers))) argerror(_("script disabling options may only be specified during " "package installation and erasure")); if (bigMode != MODE_INSTALL && bigMode != MODE_ERASE && bigMode != MODE_VERIFY && (ia->transFlags & (RPMTRANS_FLAG_NOTRIGGERS | _noTransTriggers))) argerror(_("trigger disabling options may only be specified during " "package installation and erasure")); if (ia->noDeps & (bigMode & ~MODES_FOR_NODEPS)) argerror(_("--nodeps may only be specified during package " "installation, erasure, and verification")); if ((ia->transFlags & RPMTRANS_FLAG_TEST) && (bigMode & ~MODES_FOR_TEST)) argerror(_("--test may only be specified during package installation " "and erasure")); #endif /* IAM_RPMEIU */ if (rpmcliRootDir && rpmcliRootDir[0] != '/') { argerror(_("arguments to --root (-r) must begin with a /")); } if (quiet) rpmSetVerbosity(RPMLOG_WARNING); if (rpmcliPipeOutput && initPipe()) exit(EXIT_FAILURE); ts = rpmtsCreate(); (void) rpmtsSetRootDir(ts, rpmcliRootDir); switch (bigMode) { #ifdef IAM_RPMEIU case MODE_ERASE: if (ia->noDeps) ia->installInterfaceFlags |= UNINSTALL_NODEPS; if (!poptPeekArg(optCon)) { argerror(_("no packages given for erase")); } else { ec += rpmErase(ts, ia, (ARGV_const_t) poptGetArgs(optCon)); } break; case MODE_INSTALL: /* RPMTRANS_FLAG_KEEPOBSOLETE */ if (!ia->incldocs) { if (ia->transFlags & RPMTRANS_FLAG_NODOCS) { ; } else if (rpmExpandNumeric("%{_excludedocs}")) ia->transFlags |= RPMTRANS_FLAG_NODOCS; } if (ia->noDeps) ia->installInterfaceFlags |= INSTALL_NODEPS; /* we've already ensured !(!ia->prefix && !ia->relocations) */ if (ia->prefix) { ia->relocations = xmalloc(2 * sizeof(*ia->relocations)); ia->relocations[0].oldPath = NULL; /* special case magic */ ia->relocations[0].newPath = ia->prefix; ia->relocations[1].oldPath = NULL; ia->relocations[1].newPath = NULL; } else if (ia->relocations) { ia->relocations = xrealloc(ia->relocations, sizeof(*ia->relocations) * (ia->numRelocations + 1)); ia->relocations[ia->numRelocations].oldPath = NULL; ia->relocations[ia->numRelocations].newPath = NULL; } if (!poptPeekArg(optCon)) { argerror(_("no packages given for install")); } else { /* FIX: ia->relocations[0].newPath undefined */ ec += rpmInstall(ts, ia, (ARGV_t) poptGetArgs(optCon)); } break; #endif /* IAM_RPMEIU */ #ifdef IAM_RPMQV case MODE_QUERY: if (!poptPeekArg(optCon) && !(qva->qva_source == RPMQV_ALL)) argerror(_("no arguments given for query")); ec = rpmcliQuery(ts, qva, (ARGV_const_t) poptGetArgs(optCon)); break; case MODE_VERIFY: { rpmVerifyFlags verifyFlags = VERIFY_ALL; verifyFlags &= ~qva->qva_flags; qva->qva_flags = (rpmQueryFlags) verifyFlags; if (!poptPeekArg(optCon) && !(qva->qva_source == RPMQV_ALL)) argerror(_("no arguments given for verify")); ec = rpmcliVerify(ts, qva, (ARGV_const_t) poptGetArgs(optCon)); } break; #endif /* IAM_RPMQV */ #if !defined(IAM_RPMQV) case MODE_QUERY: case MODE_VERIFY: #endif #if !defined(IAM_RPMEIU) case MODE_INSTALL: case MODE_ERASE: #endif case MODE_UNKNOWN: if (poptPeekArg(optCon) != NULL || argc <= 1 || rpmIsVerbose()) { printUsage(optCon, stderr, 0); ec = argc; } break; } rpmtsFree(ts); if (finishPipe()) ec = EXIT_FAILURE; #ifdef IAM_RPMQV free(qva->qva_queryFormat); #endif #ifdef IAM_RPMEIU if (ia->relocations != NULL) { for (i = 0; i < ia->numRelocations; i++) free(ia->relocations[i].oldPath); free(ia->relocations); } #endif rpmcliFini(optCon); return RETVAL(ec); }
static void test_match_string(krb5_context context) { krb5_error_code ret; char *s1, *s2; ret = krb5_acl_match_string(context, "foo", "s", "foo"); RETVAL(context, ret, 0, "single s"); ret = krb5_acl_match_string(context, "foo foo", "s", "foo"); RETVAL(context, ret, EACCES, "too many strings"); ret = krb5_acl_match_string(context, "foo bar", "ss", "foo", "bar"); RETVAL(context, ret, 0, "two strings"); ret = krb5_acl_match_string(context, "foo bar", "ss", "foo", "bar"); RETVAL(context, ret, 0, "two strings double space"); ret = krb5_acl_match_string(context, "foo \tbar", "ss", "foo", "bar"); RETVAL(context, ret, 0, "two strings space + tab"); ret = krb5_acl_match_string(context, "foo", "ss", "foo", "bar"); RETVAL(context, ret, EACCES, "one string, two format strings"); ret = krb5_acl_match_string(context, "foo", "ss", "foo", "foo"); RETVAL(context, ret, EACCES, "one string, two format strings (same)"); ret = krb5_acl_match_string(context, "foo \t", "s", "foo"); RETVAL(context, ret, 0, "ending space"); ret = krb5_acl_match_string(context, "foo/bar", "f", "foo/bar"); RETVAL(context, ret, 0, "liternal fnmatch"); ret = krb5_acl_match_string(context, "foo/bar", "f", "foo/*"); RETVAL(context, ret, 0, "foo/*"); ret = krb5_acl_match_string(context, "foo/bar/baz", "f", "foo/*/baz"); RETVAL(context, ret, 0, "foo/*/baz"); ret = krb5_acl_match_string(context, "foo", "r", &s1); RETVAL(context, ret, 0, "ret 1"); STRINGMATCH(context, "ret 1 match", s1, "foo"); free(s1); ret = krb5_acl_match_string(context, "foo bar", "rr", &s1, &s2); RETVAL(context, ret, 0, "ret 2"); STRINGMATCH(context, "ret 2 match 1", s1, "foo"); free(s1); STRINGMATCH(context, "ret 2 match 2", s2, "bar"); free(s2); ret = krb5_acl_match_string(context, "foo bar", "sr", "bar", &s1); RETVAL(context, ret, EACCES, "ret mismatch"); if (s1 != NULL) krb5_errx(context, 1, "s1 not NULL"); ret = krb5_acl_match_string(context, "foo", "l", "foo"); RETVAL(context, ret, EINVAL, "unknown letter"); }