NCstate NCdsHandleNetworkDefine(NCdsHandleNetwork_t *net, int ncid) { int status; if (NCdataGetType(ncid) != NCtypeNetwork) { CMmsgPrint(CMmsgAppError, "Invalid network in: %s %d", __FILE__, __LINE__); return (NCfailed); } if (NCdsHandleGLayoutDefine((NCdsHandleGLayout_t *) net, &ncid, 1) == NCfailed) return (NCfailed); net->Data = (int *) NULL; net->Basins.Table = net->Cells.Table = (NCtable_t *) NULL; if ((net->Data = (int *) calloc(net->ColNum * net->RowNum, sizeof(int))) == (int *) NULL) { CMmsgPrint(CMmsgSysError, "Memory allocation error in: %s %d", __FILE__, __LINE__); NCdsHandleNetworkClear(net); return (NCfailed); } if ((status = nc_get_var_int(ncid, net->GVarIds[0], net->Data)) != NC_NOERR) { NCprintNCError (status, "NCdsHandleNetworkDefine"); NCdsHandleNetworkClear(net); return (NCfailed); } if ((net->Basins.Table = NCtableOpen(ncid, NCnameTBItems)) == (NCtable_t *) NULL) { NCdsHandleNetworkClear(net); return (NCfailed); } if ((net->Cells.Table = NCtableOpen(ncid, NCnameTBCells)) == (NCtable_t *) NULL) { NCdsHandleNetworkClear(net); return (NCfailed); } if (((net->Basins.NameFld = NCtableGetFieldByName(net->Basins.Table, NCnameTBItems)) == (NCfield_t *) NULL) || ((net->Basins.RowFld = NCtableGetFieldByName(net->Basins.Table, NCnameBSNRow)) == (NCfield_t *) NULL) || ((net->Basins.ColFld = NCtableGetFieldByName(net->Basins.Table, NCnameBSNCol)) == (NCfield_t *) NULL) || ((net->Basins.OrderFld = NCtableGetFieldByName(net->Basins.Table, NCnameBSNOrder)) == (NCfield_t *) NULL) || ((net->Basins.SymbolFld = NCtableGetFieldByName(net->Basins.Table, NCnameBSNSymbol)) == (NCfield_t *) NULL) || ((net->Basins.LengthFld = NCtableGetFieldByName(net->Basins.Table, NCnameBSNLength)) == (NCfield_t *) NULL) || ((net->Basins.AreaFld = NCtableGetFieldByName(net->Basins.Table, NCnameBSNArea)) == (NCfield_t *) NULL) || ((net->Cells.RowFld = NCtableGetFieldByName(net->Cells.Table, NCnameCLSRow)) == (NCfield_t *) NULL) || ((net->Cells.ColFld = NCtableGetFieldByName(net->Cells.Table, NCnameCLSCol)) == (NCfield_t *) NULL) || ((net->Cells.ToCellFld = NCtableGetFieldByName(net->Cells.Table, NCnameCLSToCell)) == (NCfield_t *) NULL) || ((net->Cells.FromCellFld = NCtableGetFieldByName(net->Cells.Table, NCnameCLSFromCell)) == (NCfield_t *) NULL) || ((net->Cells.BasinFld = NCtableGetFieldByName(net->Cells.Table, NCnameCLSBasinId)) == (NCfield_t *) NULL) || ((net->Cells.NCellsFld = NCtableGetFieldByName(net->Cells.Table, NCnameCLSNCells)) == (NCfield_t *) NULL) || ((net->Cells.TravelFld = NCtableGetFieldByName(net->Cells.Table, NCnameCLSTravel)) == (NCfield_t *) NULL) || ((net->Cells.OrderFld = NCtableGetFieldByName(net->Cells.Table, NCnameCLSOrder)) == (NCfield_t *) NULL) || ((net->Cells.LengthFld = NCtableGetFieldByName(net->Cells.Table, NCnameCLSLength)) == (NCfield_t *) NULL) || ((net->Cells.AreaFld = NCtableGetFieldByName(net->Cells.Table, NCnameCLSArea)) == (NCfield_t *) NULL)) { CMmsgPrint(CMmsgAppError, "Corrupt networkd data in: %s %d", __FILE__, __LINE__); NCdsHandleNetworkClear(net); return (NCfailed); } return (NCsucceeded); }
int main(int argc, char* argv[]) { int argPos = 0, argNum = argc, ncid; char *fname = (char *) NULL, *tname = "time"; FILE *output = stdout; NCtable_t *tbl = (NCtable_t *) NULL; initMemInfo(); for(argPos = 1; argPos < argNum;) { if (CMargTest(argv[argPos],"-d","--debug")) { SetDebug(); CMargShiftLeft(argPos,argv,argc); argNum--; continue; } if (CMargTest(argv[argPos],"-h","--help")) { if((argPos + 1 < argNum) && (argv[argPos+1][0] == 'e')) doHelp (CMprgName(argv[0]),true); else doHelp (CMprgName (argv[0]),false); cleanup(NCsucceeded); } if (CMargTest(argv[argPos],"-t","--table")) { CMargShiftLeft(argPos,argv,argc); argNum--; tname = argv[argPos]; CMargShiftLeft(argPos,argv,argc); argNum--; continue; } if (CMargTest(argv[argPos],"-f","--file")) { if ((argNum = CMargShiftLeft(argPos,argv,argc)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing file!"); return (CMfailed); } fname = argv[argPos]; if ((argNum = CMargShiftLeft(argPos,argv,argc)) <= argPos) break; continue; } if (CMargTest(argv[argPos],"-o","--output")) { if ((argNum = CMargShiftLeft(argPos,argv,argc)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing output!"); return (CMfailed); } if(output != stdout) { CMmsgPrint (CMmsgUsrError, "Output file defined twice!"); cleanup(NCfailed); } if((output = fopen(argv[argPos],"w")) == (FILE *) NULL) { CMmsgPrint (CMmsgUsrError, "Cannot open for writing: %s",argv[argPos]); cleanup(NCfailed); } if ((argNum = CMargShiftLeft(argPos,argv,argc)) <= argPos) break; continue; } if ((argv[argPos][0] == '-') && (strlen (argv[argPos]) > 1)) { CMmsgPrint (CMmsgUsrError, "Unknown option: %s!",argv[argPos]); cleanup(NCfailed); } argPos++; } if(fname == (char *) NULL) { doHelp(argv[0],false); CMmsgPrint (CMmsgUsrError, "No file specified!"); cleanup(NCfailed); } if(nc_open(fname,NC_NOWRITE,&ncid) != NC_NOERR) { CMmsgPrint (CMmsgUsrError, "Error opening file!"); cleanup(NCfailed); } if((tbl = NCtableOpen(ncid,tname)) == (NCtable_t *) NULL) { CMmsgPrint (CMmsgUsrError, "Error opening table!"); cleanup(NCfailed); } if(GetDebug()) CMmsgPrint (CMmsgUsrError, "Loaded file!"); NCtableExportAscii(tbl,output); cleanup(NCsucceeded); }