Пример #1
0
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]++;
}
Пример #2
0
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;
}
Пример #3
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);  
  } 
}