static void SetOption(char *line, BOOLEAN *option) { CARDINAL index, value; Name optionName; if (!initialised) { CopyName(0, "OFF", options); CopyName(1, "ON", options); CopyName(2, "HELP", options); CopyName(3, "QUIT", options); initialised = TRUE; }; /* if */ do { index = 0 ; if (!SymbolTest(line,&index,&optionName)) { WriteChs("Bad option name\\N") ; newLine[0] = CR ; return ; } if (NameLookup(options, optionName, TRUE, &value, NumberOfOptions)) { switch (value) { case 0: case 1: *option = value != 0; line += index; /* Something odd here */ return; case 2: WriteChs("Options available:\\NOn\\NOff\\NHelp\\NQuit\\N"); break; case 3: return; }; /* case */ } else { WriteChs("Unknown option\\N"); newLine[0] = CR; return; }; /* if */ *line = CR; } while (1); } /* End SetOption */
bool Control::HasProperty(const CMIOObjectPropertyAddress& address) const { // Initialize the return value bool answer = false; // Initialize some commonly used variables CFStringRef cfstring = NULL; switch (address.mSelector) { case kCMIOObjectPropertyName: cfstring = CopyName(); if (cfstring != NULL) { answer = true; CFRelease(cfstring); } break; case kCMIOObjectPropertyManufacturer: cfstring = CopyManufacturerName(); if (cfstring != NULL) { answer = true; CFRelease(cfstring); } break; case kCMIOControlPropertyScope: answer = true; break; case kCMIOControlPropertyElement: answer = true; break; case kCMIOControlPropertyVariant: answer = true; break; default: answer = Object::HasProperty(address); break; }; return answer; }
void Control::GetPropertyData(const CMIOObjectPropertyAddress& address, UInt32 qualifierDataSize, const void* qualifierData, UInt32 dataSize, UInt32& dataUsed, void* data) const { switch (address.mSelector) { case kCMIOObjectPropertyName: ThrowIf(dataSize != GetPropertyDataSize(address, qualifierDataSize, qualifierData), CAException(kCMIOHardwareBadPropertySizeError), "CMIO::DP::Control::GetPropertyData: wrong data size for kCMIOObjectPropertyName"); *static_cast<CFStringRef*>(data) = CopyName(); dataUsed = sizeof(CFStringRef); break; case kCMIOObjectPropertyManufacturer: ThrowIf(dataSize != GetPropertyDataSize(address, qualifierDataSize, qualifierData), CAException(kCMIOHardwareBadPropertySizeError), "CMIO::DP::Control::GetPropertyData: wrong data size for kCMIOObjectPropertyManufacturer"); *static_cast<CFStringRef*>(data) = CopyManufacturerName(); dataUsed = sizeof(CFStringRef); break; case kCMIOControlPropertyScope: ThrowIf(dataSize != GetPropertyDataSize(address, qualifierDataSize, qualifierData), CAException(kCMIOHardwareBadPropertySizeError), "CMIO::DP::Control::GetPropertyData: wrong data size for kCMIOControlPropertyScope"); *static_cast<CMIOObjectPropertyScope*>(data) = GetPropertyScope(); dataUsed = sizeof(CMIOObjectPropertyScope); break; case kCMIOControlPropertyElement: ThrowIf(dataSize != GetPropertyDataSize(address, qualifierDataSize, qualifierData), CAException(kCMIOHardwareBadPropertySizeError), "CMIO::DP::Control::GetPropertyData: wrong data size for kCMIOControlPropertyElement"); *static_cast<CMIOObjectPropertyElement*>(data) = GetPropertyElement(); dataUsed = sizeof(CMIOObjectPropertyElement); break; case kCMIOControlPropertyVariant: ThrowIf(dataSize != GetPropertyDataSize(address, qualifierDataSize, qualifierData), CAException(kCMIOHardwareBadPropertySizeError), "CMIO::DP::Control::GetPropertyData: wrong data size for kCMIOControlPropertyVariant"); *static_cast<UInt32*>(data) = GetVariant(); dataUsed = sizeof(UInt32); break; default: Object::GetPropertyData(address, qualifierDataSize, qualifierData, dataSize, dataUsed, data); break; }; }
/**** * * tc_create_crl * * return * 0 okay * TC_E_INVARGS * TC_E_NOMEMORY * TC_E_INVDATE * *****/ int tc_create_crl (TC_CertificateList **crl, const unsigned char *alg, /* alg to sign crl */ size_t algLen, /* len of `alg' */ const unsigned char *algParm, size_t algParmLen, TC_Name *issuer, /* crl issuer */ time_t nextUpdate, /* next crl update expected */ TC_ExtensionList *crlExts, /* CRL ext's */ TC_CONTEXT *ctx) { int status = 0; PKICertificateList *localCRL = NULL; TC_Name *localIssuer = NULL; do { if (crl == NULL || issuer == NULL || nextUpdate < 0) { status = TC_E_INVARGS; break; } localCRL = PKINewCertificateList(ctx->certasnctx); if (localCRL == NULL) { status = TC_E_NOMEMORY; break; } /* set the version, if there are extensions then its v2, otherwise leave NULL */ if (crlExts != NULL) { localCRL->tbsCertList.version = PKINewINTEGER(ctx->certasnctx); if (localCRL->tbsCertList.version == NULL) { status = TC_E_NOMEMORY; break; } PKIPutIntVal(ctx->certasnctx, localCRL->tbsCertList.version, TC_X509_VERSION_2); } if ((status = tc_set_alg(&localCRL->tbsCertList.signature, alg, algLen, algParm, algParmLen, ctx)) != 0) break; if ((status = tc_set_alg(&localCRL->signatureAlgorithm, alg, algLen, algParm, algParmLen, ctx)) != 0) break; /* issuer, create a local copy first */ if ((status = CopyName(&localIssuer, issuer, ctx)) != 0) break; localCRL->tbsCertList.issuer.CHOICE_field_type = localIssuer->CHOICE_field_type; localCRL->tbsCertList.issuer.data = localIssuer->data; /* now free just the upper level structure, free'ing the Cert will free the rest */ TC_Free(ctx->memMgr, localIssuer); /* this update */ localCRL->tbsCertList.thisUpdate.CHOICE_field_type = PKIID_UTCTime; if ((status = tc_encode_utctime ( (PKIUTCTime **)&localCRL->tbsCertList.thisUpdate.data, time(NULL), ctx) ) != 0) break; /* next update */ if (nextUpdate != 0) { /* its optional */ /* the value for nextUpdate must be later than current time */ if (nextUpdate <= time(NULL)) { status = TC_E_INVDATE; break; } localCRL->tbsCertList.nextUpdate = PKINewTime(ctx->certasnctx); localCRL->tbsCertList.nextUpdate->CHOICE_field_type = PKIID_UTCTime; if ((status = tc_encode_utctime ( (PKIUTCTime **)&localCRL->tbsCertList.nextUpdate->data, nextUpdate, ctx)) != 0) break; } /* extensions */ if (crlExts != NULL) { if ((status = CopyExtList(&localCRL->tbsCertList.crlExtensions, crlExts, ctx)) != 0) break; } else localCRL->tbsCertList.crlExtensions = NULL; } while (0); if (status == 0) *crl = localCRL; else *crl = NULL; return status; } /* tc_create_crl */