int main(int argc, char **argv ) { struct cmdlineInfo cmdline; FILE* ifP; struct pam pam; struct pfmHeader pfmHeader; pfmSample * pfmRowBuffer; unsigned int pfmSamplesPerRow; unsigned pfmRow; tuplen ** tuplenArray; machineEndianness = thisMachineEndianness(); pnm_init(&argc, argv); parseCommandLine(argc, argv, &cmdline); ifP = pm_openr(cmdline.inputFilespec); readPfmHeader(ifP, &pfmHeader); if (cmdline.verbose) dumpPfmHeader(pfmHeader); initPam(&pam, pfmHeader.width, pfmHeader.height, pfmHeader.color, cmdline.maxval); tuplenArray = pnm_allocpamarrayn(&pam); pfmSamplesPerRow = pam.width * pam.depth; MALLOCARRAY_NOFAIL(pfmRowBuffer, pfmSamplesPerRow); /* PFMs are upside down like BMPs */ for (pfmRow = 0; pfmRow < pam.height; ++pfmRow) makePamRow(&pam, ifP, pfmRow, pfmSamplesPerRow, tuplenArray, pfmHeader.endian, pfmHeader.scaleFactor, pfmRowBuffer); pnm_writepamn(&pam, tuplenArray); pnm_freepamarrayn(tuplenArray, &pam); free(pfmRowBuffer); pm_close(ifP); pm_close(pam.file); return 0; }
bool PamAuthentication::validatePasswordToken(const QString &token) { pam_handle *pamHandle = 0; if (!initPam(&pamHandle)) { qDebug() << Q_FUNC_INFO << "Pam init failed"; return false; } m_passwordToken = token; int status = pam_authenticate(pamHandle, 0); qDebug() << Q_FUNC_INFO << "Pam authenticate status" << status << pam_strerror(pamHandle, status); if (status == PAM_SUCCESS) { status = validateAccount(pamHandle); } pam_end(pamHandle, status); m_passwordToken.clear(); return status == PAM_SUCCESS; }