tmopen(dev, flag) { register unit, ds; unit = minor(dev) & 0177; if (t_openf[unit]) { u.u_error = ENXIO; return; } t_blkno[unit] = 0; t_nxrec[unit] = 65535; t_flags[unit] = 0; tmtab.b_flags |= B_TAPE; ds = tcommand(dev, NOP); if ((ds&TUR)==0) { printf("mt%d off line\n",unit); u.u_error = ENXIO; } if (flag && ds&WL) { printf("mt%d needs write ring\n",unit); u.u_error = ENXIO; } if (u.u_error==0) t_openf[unit]++; }
int main (int argc, char *argv[]){ // Normalize names from input stripLeadingSlashes(argc, argv); if (argc < 3){ fprintf(stderr, "Far: Far r|x|d|t archive [filename]*\n"); } else if (!strcmp("r", argv[1])){ // User wants to add or update files to directory if(rcommand(argc, argv) == 0){ // R command finished successfully }else { fprintf(stderr, "Error %s: %s\n", errDesc, strerror(errno)); } } else if (!strcmp("t", argv[1])){ if(tcommand(argc, argv) == 0){ // T command finished successfully }else{ fprintf(stderr, "Error %s: %s\n", errDesc, strerror(errno)); } } else if (!strcmp("x", argv[1])){ if(xcommand(argc, argv) == 0){ // X command finished successfully }else { fprintf(stderr, "Error %s: %s\n", errDesc, strerror(errno)); } } else if(!strcmp("d", argv[1])){ if(dcommand(argc, argv) == 0){ // D command finished successfully }else { fprintf(stderr, "Error %s: %s\n", errDesc, strerror(errno)); } }else { fprintf(stderr, "Far: Far r|x|d|t archive [filename]*\n"); } return 0; }
void ParadynTkGUI::chooseMetricsandResources(chooseMandRCBFunc cb, pdvector<metric_focus_pair> * /* pairList */ ) { // store record with unique id and callback function UIMMsgTokenID++; int newptr; Tcl_HashEntry *entryPtr = Tcl_CreateHashEntry (&UIMMsgReplyTbl, (char *)UIMMsgTokenID, &newptr); if (newptr == 0) { showError(21, ""); thr_exit(0); } unsigned requestingThread = getRequestingThread(); // in theory, we can check here whether this (VISI-) thread already // has an outstanding metric request. But for now, we let code in mets.tcl do this... // pdstring commandStr = pdstring("winfo exists .metmenunew") + pdstring(requestingThread); // myTclEval(interp, commandStr); // int result; // assert(TCL_OK == Tcl_GetBoolean(interp, Tcl_GetStringResult(interp), &result)); // if (result) // return; // the window is already up for this thread! UIMReplyRec *reply = new UIMReplyRec; reply->tid = requestingThread; reply->cb = (void *) cb; Tcl_SetHashValue (entryPtr, reply); if (!all_metrics_set_yet) { pdvector<met_name_id> *all_mets = dataMgr->getAvailableMetInfo(true); for (unsigned metlcv=0; metlcv < all_mets->size(); metlcv++) { unsigned id = (*all_mets)[metlcv].id; pdstring &name = (*all_mets)[metlcv].name; all_metric_names[id] = name; pdstring idString(id); bool aflag; aflag=(Tcl_SetVar2(interp, "metricNamesById", const_cast<char*>(idString.c_str()), const_cast<char*>(name.c_str()), TCL_GLOBAL_ONLY) != NULL); assert(aflag); } delete all_mets; all_metrics_set_yet = true; } // Set metIndexes2Id via "temp" (void)Tcl_UnsetVar(interp, "temp", 0); // ignore result; temp may not have existed pdvector<met_name_id> *curr_avail_mets_ptr = dataMgr->getAvailableMetInfo(false); pdvector<met_name_id> &curr_avail_mets = *curr_avail_mets_ptr; unsigned numAvailMets = curr_avail_mets.size(); assert( numAvailMets > 0 ); for (unsigned metlcv=0; metlcv < numAvailMets; metlcv++) { pdstring metricIdStr = pdstring(curr_avail_mets[metlcv].id); bool aflag; aflag = (Tcl_SetVar(interp, "temp", const_cast<char*>(metricIdStr.c_str()), TCL_APPEND_VALUE | TCL_LIST_ELEMENT) != NULL); assert(aflag); } delete curr_avail_mets_ptr; pdstring tcommand("getMetsAndRes "); tcommand += pdstring(UIMMsgTokenID); tcommand += pdstring(" ") + pdstring(requestingThread); tcommand += pdstring(" ") + pdstring(numAvailMets); tcommand += pdstring(" $temp"); int retVal = Tcl_VarEval (interp, tcommand.c_str(), 0); if (retVal == TCL_ERROR) { uiMgr->showError (22, ""); cerr << Tcl_GetStringResult(interp) << endl; thr_exit(0); } }